用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']。