У меня есть сайт, который разрешает публичный доступ к некоторым страницам, но требует входа для других. У меня есть ссылка на логин со всех страниц, и после успешного входа я хотел бы отправить пользователя обратно на страницу, на которой он был, когда щелкнул ссылку для входа. Я знаю, что HTTP_REFERER может быть подделан, а иногда и удален определенными хостами и прокси-серверами, но так как он находится исключительно на моем собственном сайте, и только для удобства пользователей, я не слишком беспокоюсь об этом
Мне любопытно, почему он не работает в сочетании с перенаправлением. Я установил видимое поле, содержащее значение http referer, и оно отображается правильно. Таким образом, страница получает значение переменной referrer. Но когда я попробую это:
$home_url = $_SERVER['HTTP_REFERER'];
header('Location: ' . $home_url);
это не работает. Это, с другой стороны, делает:
$home_url = 'http://' . $_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/discussions.php';
header('Location: ' . $home_url);
Итак, я знаю, что часть расположения заголовка работает. Есть идеи, почему он не хочет работать вместе с переменной http_referer?
(Кроме того, это сводит кого-то с ума, что реферер написан неправильно? Я продолжаю опечатывать его, используя написание OED, глупый я ...)