用PHP获取原始URL referer?

我正在使用$_SERVER['HTTP_REFERER']; 得到引用者Url。 它按预期工作,直到用户单击另一个页面,引用者更改为最后一页。

我如何存储原来的推荐Url?

将其存储在cookie中(如果可以接受的话)或会话variables。

 session_start(); if ( !isset( $_SESSION["origURL"] ) ) $_SESSION["origURL"] = $_SERVER["HTTP_REFERER"]; 

另外,不要忘记,因为它是Web应用程序的常见攻击vector,所以要逃避$_SERVER["HTTP_REFERER"]

正如Johnathanbuild议的那样,您可能希望将其保存在cookie或会话中。

更简单的方法是使用Sessionvariables。

 session_start(); if(!isset($_SESSION['org_referer'])) { $_SESSION['org_referer'] = $_SERVER['HTTP_REFERER']; } 

把它放在页面的顶部,你将永远可以访问网站访问者的第一个引用者。

将其存储在仅支持当前浏览会话的cookie中

使用Cookie作为参考页面的存储库在大多数情况下要好得多,因为在浏览器closures之前cookie会保持引用,直到浏览器标签被closures,所以如果用户离开页面,在周末之前,几天后回到它,你的会议可能会过期,但cookies仍然会在那里。

把这个代码放在一个页面的开头(在任何html输出之前,因为cookies只会在任何回显/打印之前正确设置):

 if(!isset($_COOKIE['origin_ref'])) { setcookie('origin_ref', $_SERVER['HTTP_REFERER']); } 

然后您可以稍后访问它:

 $var = $_COOKIE['origin_ref']; 

除了@pcp提供的有关转义$ _SERVER ['HTTP_REFERER']的build议之外,在使用cookie时,您可能还希望在每个请求中转义$ _COOKIE ['origin_ref']。