как запомнить последнюю страницу для редиректа после логина?

Пользователь открыл какую то страницу на сайте, решил скажем оставить комментарий но еще не залогинен.

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

UPD - пользователь ввел страницу с аккаунта, например на личную почту из почтового сообщения. Мы делаем редирект на страницу логина.

1 ответов


Я, обычно, это делаю дополнительным параметром в адресной строке: указываю или id страницы, или ее полный адрес:
site.ru/login.php?ret_page=12
site.ru/login.php?ret_url=site.ru/previous_page
Соответственно, у формы на странице логина не пишу параметр action:


<form method="post">
...
</form>
 
В этом случае данные формы будут отправлены на адрес данной страницы, содержащий все параметры адресной строки. А на уровне php проверяю: если авторизация прошла успешно и есть параметр, то делаю редирект:

if ($auotorize && isset($_GET["ret_url"])
  header("Location...


Несколько сложнее, если исходная страница уже содержит параметры. Например, человек переходит по ссылке "прочитать личное сообщение" из письма-уведомления:
site.ru/read_message.php?id_user=12&id_message=35&from=e-mail
В этом случае я использую сессию для хранения этих параметров

Может я не совсем понял вопрос (не понятна сама ситуация)), но предполагаю два варианта:

  1. Есть страница с контекстным блоком ввода, тогда достаточно, как мне кажется, просто прочитать:

    $_SERVER['HTTP_REFERER']
     
  2. Есть отдельная страница для регистрации, в этом случае на самой странице читаем $_SERVER['HTTP_REFERER'] и встраиваем значение как один из параметров при регистрации - страница редиректа.


  3. Может Вы опишите ситуацию несколько поподробнее?)

а я храню в сессии страницы, вроде просто и удобно ) можно отслеживать по каким страницам прошолся пользователь ну понятное дело храню не все страницы а например 20 последних и вытащить предыдущую не составляет особого труда.