我$_SERVER['HTTP_REFERER'];
用来获取引荐来源网址。它按预期工作,直到用户单击另一个页面并且引用者更改为最后一页。
如何存储原始引用 URL?
我$_SERVER['HTTP_REFERER'];
用来获取引荐来源网址。它按预期工作,直到用户单击另一个页面并且引用者更改为最后一页。
如何存储原始引用 URL?
将其存储在 cookie 中(如果您的情况可以接受)或会话变量中。
session_start();
if ( !isset( $_SESSION["origURL"] ) )
$_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];
正如 Johnathan 建议的那样,您可能希望将其保存在 cookie 或会话中。
更简单的方法是使用 Session 变量。
session_start();
if(!isset($_SESSION['org_referer']))
{
$_SESSION['org_referer'] = $_SERVER['HTTP_REFERER'];
}
将其放在页面顶部,您将始终能够访问指向该网站访问者的第一个引用者。
将其存储在仅持续当前浏览会话的 cookie 中
在大多数情况下,使用 Cookie 作为参考页面的存储库要好得多,因为 cookie 将保留引用者直到浏览器关闭(并且即使浏览器选项卡关闭也会保留它),所以如果用户让页面保持打开状态,让我们说在周末之前,并在几天后返回它,您的会话可能会过期,但 cookie 仍然会存在。
将该代码放在页面的开头(在任何 html 输出之前,因为 cookie 只会在任何回显/打印之前正确设置):
if(!isset($_COOKIE['origin_ref']))
{
setcookie('origin_ref', $_SERVER['HTTP_REFERER']);
}
然后您可以稍后访问它:
$var = $_COOKIE['origin_ref'];
除了 @pcp 关于转义 $_SERVER['HTTP_REFERER'] 的建议之外,在使用 cookie 时,您可能还希望在每个请求上转义 $_COOKIE['origin_ref']。
试试这个
(isset ($_SERVER['HTTP_CLIENT_IP']) ?
$_SERVER['HTTP_CLIENT_IP'] :
(isset ($_SERVER['HTTP_X_FORWARDED_FOR']) ?
$_SERVER['HTTP_X_FORWARDED_FOR'] :
$_SERVER['REMOTE_ADDR']
)
)