Что такое редирект
Редирект — это перенаправление пользователя с одной страницы на другую. Причём редирект можно настроить как на разные страницы одного сайта, так и на страницу другого сайта.
Основные виды редиректов:
PHP location redirect
Редирект на изначально запрашиваемую страницу после авторизации на базе php – weril
Redirect делается обычно на основе запрашиваемого URL из переменной $_SERVER[‘REQUEST_URI’], далее назовем это query URL.
Первоначально редиректим на страницу авторизации с указанием запрашиваемого url из query URL в переменной location.
header("Location:login.php?location=" . $_SERVER['REQUEST_URI'] );
Уже на странице авторизации после успешной авторизации делаем тоже самое – забираем query URL. Далее выщепляем из него только нужное через регулярные выражения или explode на основе строки “location=” и редиректим. В случае если в запросе нет строки “location=” – редиректим на index.php.
$req_url = ($_SERVER['REQUEST_URI']);$splitted_array = explode('location=', $req_url);if(!empty($splitted_array[1])){ $url= $splitted_array[1]; header("Location:$url");}else{ header("Location:index.php");}
Redirect after login on wordpress
Redirect users to different locations after logging in and logging out.
Define a set of redirect rules for specific users, users with specific roles, users with specific capabilities, and a blanket rule for all other users. Also, set a redirect URL for post-registration. This is all managed in Settings > Login/logout redirects.
You can use the syntax [variable]username[/variable]
in your URLs so that the system will build a dynamic URL upon each login, replacing that text with the user’s username. In addition to username, there is “userslug”, “homeurl”, “siteurl”, “postid-23”, “http_referer” and you can also add your own custom URL “variables”…
Для чего нужен редирект
Редирект может понадобиться в следующих ситуациях:
Как сделать редирект после авторизации?
Как настроить php-редирект
Прописывать редирект на сайт в PHP нужно в индексном файле. Чаще всего он называется index.php. Для настройки вам понадобится функция header( ).
Она выглядит так:
Как настроить редирект с задержкой
Иногда нужно, чтобы пользователь попал на страницу и только спустя несколько секунд перешел на конечный сайт. Такое перенаправление можно настроить в индексном файле с помощью функции sleep( ).
Чтобы настроить переадресацию с задержкой:
Готово, вы настроили редирект c задержкой.
Как работает редирект в php
Предположим, вы сделали редирект со страницы index.php на index1.php. Когда пользователь откроет страницу с редиректом, в системе произойдёт следующее:
- Браузер запросит файл стартовой страницы index.php с сервера.
- Сервер, получив запрос от браузера, сообщит, что файл index.php больше недоступен и браузеру нужно искать новый файл index1.php.
- Браузер отправит новый запрос к серверу, на котором находится index1.php, и получит ответ.
- Браузер отобразит страницу index1.php.
Редирект на предыдущую страницу после авторизации? рнр
Я искал решение, но, похоже, я не могу получить его правильно, независимо от того, что я пытаюсь.
после успешного входа в систему пользователь должен быть перенаправлен на страницу, с которой он пришел, скажем, он просматривал сообщение и хочет войти, чтобы он мог оставить комментарий, поэтому он должен быть перенаправлен на сообщение, которое он просматривал. Итак, вот что у меня есть:
логин.в PHP показывает форму входа:
<form method="post" action="login-check.php">
... //input for username and password
</form>
на вход-регистрация.в PHP проверяет, введены ли имя пользователя и пропуск, существует ли пользователь или он уже вошел в систему, и параметр p отправляется для входа в систему.на PHP:
<?php
session_start();
if((empty($username) OR empty($password) AND !isset($_SESSION['id_login']))) {
header("Location:login.php?p=1");
exit();
}
elseif (!user_exists($username,$password) AND !isset($_SESSION['id_login'])) {
header("Location:login.php?p=2");
exit();
}
elseif(isset($_SESSION['id_login'])) {
header("Location:login.php?p=3");
exit();
}
?>
p отправляется обратно в логин.в PHP и отображает соответствующее сообщение:
<?php
if(isset($_GET['p'])) {
$p = $_GET["p"];
if($p=="1")
echo "<p class="red">You didn't fill the form.</p><br></br>";
if($p=="2")
echo "<p class="red">User exists.</p><br></br>";
if($p=="3")
header("Location: index.php");
}
?>
но, вместо того, чтобы проиндексировать.php после успешного входа в систему он должен перейти на страницу, на которой ранее был пользователь. Я пробовал по-разному, но эфир не работает вообще или возвращается к логину.РНР. Этого не должно быть. супер безопасно, потому что я делаю это для школьного проекта.
Кроме того, я считаю себя довольно новичком, поэтому, пожалуйста, имейте терпение 😀
К слову, обработчик $_POST находится в этом же файле.