PHP перенаправление без изменения заголовков - PullRequest
2 голосов
/ 27 марта 2009

У меня есть PHP-скрипт, который перенаправляет пользователя через некоторый код, такой как:

header ('Location: http://someurl/somepage.php');

Затем в somepage.php я пытаюсь получить доступ к $_SERVER['HTTP_REFERER'], чтобы определить, откуда поступил запрос страницы. Я считаю, что $_SERVER['HTTP_REFERER'] пусто, когда страница вызывается с использованием метода местоположения заголовка.

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

Ответы [ 2 ]

6 голосов
/ 27 марта 2009

Одна вещь, которую вы можете попробовать: вместо отправки заголовка Location отправьте обратно HTML-страницу с тегом

<meta http-equiv="refresh" content="0;url=http://someurl/somepage.php">

в разделе <head>. Я не уверен, что это решит вашу проблему, хотя ... это действительно зависит от поведения браузера. Значение $_SERVER['HTTP_REFERER'] берется из заголовка запроса Referer, который браузер может отправлять или не отправлять по своему усмотрению.

Что-то еще, что вы могли бы сделать, это

header("Location: http://someurl/somepage.php?referer=http%3A%2F%2Fthisurl%2Fthispage.php");

, то есть отправьте URL-адрес реферера в качестве параметра строки запроса, затем вы можете получить к нему доступ как $_GET['referer']. Вероятно, это более надежно, чем использование браузера для отправки заголовка реферера.

1 голос
/ 27 марта 2009

Заголовок HTTP Referer: устанавливается агентом пользователя, а не сервером. Я не уверен, что вы можете что-либо сделать, чтобы получить заголовок Referer.

...