PHP重定向而不修改标题

时间:2009-03-27 04:44:29

标签: php redirect header location

我有一个PHP脚本,它通过以下代码重定向用户:

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

然后在somepage.php中,我尝试访问$_SERVER['HTTP_REFERER']以确定页面请求的来源。当使用标头定位方法调用页面时,我发现$_SERVER['HTTP_REFERER']为空。

是否有其他方法可用于重定向用户,以便我仍然可以在目标网页中使用$_SERVER['HTTP_REFERER']

2 个答案:

答案 0 :(得分: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 :(得分:1)

HTTP Referer:标头由用户代理设置,而不是由服务器设置。我不确定你能做些什么来确保你得到一个Referer标题。