2017-07-14 53 views
0

<html>标签之前,我有以下代码:我如何防止HTTP_REFERER从<code>header.php</code>文件我的WordPress网站的被覆盖

<?php 

session_start(); 

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

?> 

为了测试上面的代码,我把下面的代码在前面-page.php文件(和它的作品):

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

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

只要访问者在我的网站上,当访问者首次从外部网站到达我的网站时,是否有任何方法可以存储$_SERVER['HTTP_REFERER']的值?

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

+0

检查引荐来源网站是否包含您的域名,如果有,请忽略它? –

+0

我最终需要将这些信息发布到表单中,所以我需要在会话期间记录初始值。 – LCW

回答

2

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

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

您可能还希望在$ _SERVER ['HTTP_REFERER']上使用'parse_url'来检测并忽略来自您自己站点域的引用。 – ceejayoz

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']; 
} 
相关问题