Перенаправить заголовок реферера - PullRequest
0 голосов
/ 06 апреля 2011

У меня есть скрипт входа в PHP, куда я перенаправляю клиентов.Когда клиент вошел в систему, я хочу вернуть пользователя на страницу, которая 302 перенаправила его на страницу входа в систему.

Я хочу сохранить URL-адрес как можно более чистым (желательно только / login), иЯ не хочу использовать файлы cookie, например файлы cookie сеанса.

Я пытался положиться на $_SERVER['HTTP_REFERRER'], но у меня возникает проблема, связанная с тем, что при нажатии на ссылку, требующую входа в систему, устанавливается значение $_SERVER['HTTP_REFERRER']на страницу, где была нажата ссылка, а не на целевую страницу, которая отправляет перенаправление 302.(FF4)

Если $_SERVER['HTTP_REFERRER'] не установлено (https, закладка или что-то еще), то я загромождаю URL-адрес GET обратным URL-адресом ( / login / return / myurl ),Для всех других случаев (когда браузер предоставляет HTTP_REFERRER по запросу, который перенаправляет на / login), я действительно хочу полагаться исключительно на $_SERVER['HTTP_HEADER'] для создания чистого URL.

Есть ли способ вежливо спроситьбраузер для отправки «правильного» реферера с помощью заголовка перенаправления, или я застрял с засорением URL для всех перенаправлений?

Ответы [ 2 ]

2 голосов
/ 06 апреля 2011

Нет, нет способа спросить браузер о чем-то связанном с реферером.

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

0 голосов
/ 06 апреля 2011

Невозможно указать URL-адрес, отправляемый в заголовке Referer. У вас есть три варианта.

  • Сохранить URL-адрес в сеансе.
  • Сохраните URL в файле cookie.
  • Сохранить URL в параметре запроса.

Параметр запроса является наиболее подходящим, поскольку у пользователя может быть открыто несколько окон (которые совместно используют сеанс и файлы cookie), и вы можете легко их различить.

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