2015-02-09 110 views
0

我有一些PHP代码,它检查HTTP Referer并相应地设置一批cookie,它应该检测HTTP引用者是什么,并且只设置来自外部源的Cookie,所以不在当前域。现在,当我点击外部域名时,它可以工作并设置cookie,但当我点击任何内部网站链接所有cookie时(除了日期设置为空白外,PHP不是我的母语,所以任何帮助都是赞赏在IF ELSE语句中设置PHP cookie

我的代码如下:?

$CheckURL = substr($_SERVER[HTTP_REFERER],7,21); 
if($CheckURL <> "www.sitesithere.co.uk") { 

// external link so lets get the data 
setcookie("XX_HTTP_First_2PHP", $varRefererCheck, time() + (86400 * 30), "/"); 
setcookie("XX_Source_First_2PHP", $varSource, time() + (86400 * 30), "/"); 
setcookie("XX_Medium_First_2PHP", $varMedium, time() + (86400 * 30), "/"); 
setcookie("XX_Campaign_First_2PHP", $varCampaign, time() + (86400 * 30), "/"); 
setcookie("XX_GCLID_First_2PHP", $vargclid, time() + (86400 * 30), "/"); 
setcookie("XX_First_Date_2PHP", date('l jS \of F Y h:i:s A'), time() + (86400 * 30), "/"); 
} else { 
// Internal link do nothing! 

} 

回答

0

有几件事情:

  • 首先,把引号HTTP_REFERER,否则就会认为你正在使用一个常数,不一个文字字符串
  • 其次,<>不是在PHP中检查“不等于”的方法。相反,使用!=运营商
  • 第三,HTTP_REFERER是不是一个很好的方式来处理此问题。 From php.net:

    将用户代理引用到当前页面的页面地址(如果有的话)。这由用户代理设置。并非所有的用户代理都会设置它,有些提供了将HTTP_REFERER修改为功能的功能。总之,它不能真正被信任。