如何防止HTTP_REFERER被覆盖

时间:2017-07-14 15:18:46

标签: php html wordpress session http-referer

在我的WordPress网站的<html>文件中的header.php标记之前,我有以下代码:

<?php

session_start();

$_SESSION['refererurl'] = $_SERVER['HTTP_REFERER'];

?>

为了测试上面的代码,我将以下代码放在front-page.php文件中(并且它可以工作):

<?php
    echo $_SESSION['refererurl'];
?>

我这样做是因为我想跟踪从外部网站引导访问我网站的引荐来源网址(用于目标跟踪)。问题是$_SERVER['HTTP_REFERER']重置页面加载,因此当访问者首次登陆我的网站时,这些信息非常有用,只要访问者进一步浏览我的网站,它就会被覆盖。

如果访问者在我的网站上访问,只要访问者在我的网站上首次访问我的网站,是否有任何方法可以存储$_SERVER['HTTP_REFERER']的值?

我在这个级别上对PHP很新,所以请原谅我缺乏经验。我正在将$_SERVER['HTTP_REFERER']存储在一个会话中,因为我收集的内容基于对会话和cookie的快速研究而有效。

2 个答案:

答案 0 :(得分:2)

非常简单 - 只设置如果它尚未设置。

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

答案 1 :(得分:0)

您可以检查$_SESSION['refererurl']是否已设置,只是不要覆盖它: - )

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

您可能还想在尝试分配之前检查引用者是否为空:

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