Перенаправление назад после входа в PHP
У меня есть такой сценарий. Когда администратор получает от клиента письмо о заказах с URL-ссылкой на страницу формы PHP, доступ к которой возможен только при входе администратора. Если администратор не вошел в систему, URL будет перенаправлен на страницу входа. После успешного входа администратора мне нужно перенаправить его на URL, который он получил в письме.
Кто-нибудь может сказать мне, как это сделать. Я прочитал что-то о HTTP_REFERER, но он не работает должным образом, как будто администратор не вошел в систему, он напрямую перенаправляет в login.php
Пожалуйста, помогите мне решить проблему
Спасибо
3 ответа
Просто попробуйте привести пример:
originating_page.php
if(!is_admin) {
$_SESSION["originatingpage"] = $_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
header('Location: http://'.$_SERVER["HTTP_HOST"].'/login.php');
}
}
login.php
if(is_admin_success_login) {
if (isset($_SESSION["originatingpage"])) {
$originatingpage = $_SESSION["originatingpage"];
unset($_SESSION["originatingpage"]);
header('Location: http://'.$originatingpage);
} else {
//do another default action
}
}
Сохраните URL-адрес страницы, к которой человек пытался получить доступ, прежде чем перенаправлять на login.php. Вы можете сохранить его в переменной сеанса или в URL. Тогда ваша страница login.php будет знать, куда отправить пользователя после того, как он вошел в систему.
Например, на странице, требующей входа в систему:
session_start();
$_SESSION['came_from'] = $_SERVER['REQUEST_URI'];
header("Location: login.php");
И в login.php, после того как пользователь вошел в систему:
session_start();
header("Location: http://" . $_SERVER['HTTP_HOST'] . $_SESSION['came_from']);
Ваша страница входа может иметь скрытый вход:
<input type="hidden" name="redirect_to" value="<?php echo $_SERVER['HTTP_REFERER']; ?>" />
Или на "исходной странице" вы можете передать текущий REQUEST_URI как переменную get, которая, в свою очередь, переходит к тому же элементу формы. Затем, когда они отправляют форму, вы проверяете $_REQUEST['redirect_to']
и выдать его с header()
,
...
if (logged in && redirect to is filled in){
header('Location: '.$_REQUEST['redirect_to']);
}
...
Выше псевдокод, кстати