Перенаправление назад после входа в 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']);
}
...

Выше псевдокод, кстати

Другие вопросы по тегам