Запоминание места назначения при входе - PullRequest
0 голосов
/ 19 июля 2010

Когда я хочу перенаправить пользователя на определенную страницу за стеной входа в систему, и он еще не вошел в систему, он перенаправляется на домашнюю страницу, где он может войти.Когда они входят в систему, они перенаправляются на адрес по умолчанию.

Как мне вспомнить, где находится исходный пункт назначения пользователей, до того как они были перенаправлены на страницу входа?

РЕДАКТИРОВАТЬ СРЕШЕНИЕ

Спасибо за ответы.Что я сделал, так это установил запрос GET, когда пользователь обнаружил, что он не вошел в систему, используя URL: domain.com/?url=$_SERVER["REQUEST_URI"]

То есть, когда пользовательперенаправленный на страницу входа в систему, адрес, на который пользователь пытался добраться, устанавливается в значении GET.Когда пользователь входит в систему и аутентифицируется, я проверяю, есть ли значение GET, если оно есть, и добавляю его в конец адресной строки URL.

END EDIT

Ответы [ 3 ]

1 голос
/ 19 июля 2010

добавьте переменную, содержащую путь к странице, которую пользователь начал входить в систему. Посмотрите, как это делается в SO: при выборе входа вы перенаправляетесь на страницу с параметром returnurl, например:

returnurl=%2fquestions%2f3280860%2fremembering-destination-when-logging-in

после успешного входа вы можете вернуть пользователя на эту страницу.

1 голос
/ 19 июля 2010

Самый простой способ - добавить URL текущей страницы на страницу входа в качестве аргумента:

... not logged in ....
 header("Location: loginpage.php?url=".
         urlencode($_SERVER["REQUEST_URI"]));

(Обратите внимание, что для этого оба сценария должны находиться в одном домене. Если онинаходятся в разных доменах, вам нужно использовать что-то вроде "http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"])

и после входа в систему, перенаправить на эту страницу:

 header("Location: ".$_GET["url"]);
0 голосов
/ 19 июля 2010

Вы можете использовать $_SERVER['PHP_SELF'], чтобы вернуть относительный путь текущей страницы и передать его в качестве параметра строки запроса на страницу входа.

Например, ваш код, который проверяет, вошел ли пользователь в систему, может находиться во включаемом файле и выглядеть следующим образом:

if(!isset($_SESSION["some variable"]))
{
  $login = sprintf("%s?dest=%s", LOGIN_URL,  $_SERVER['PHP_SELF']);
  header("location: " . $login);
}

на странице входа в систему, как только пользователь войдет в систему, вы можете перенаправить его на исходный URL, доступ к которому осуществляется с помощью $ _GET ["dest"].

Код набирается из памяти, и я не могу проверить его позже - однако он должен работать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...