2009-03-27 3 views
2

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

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

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

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

ответ

6

Одна вещь, которую вы могли бы попробовать: вместо того, чтобы послать заголовок 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"); 

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

1

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