淘汰推荐页面(php)

时间:2012-04-25 23:38:42

标签: php session referrer

在我的工作中,我经常需要弄清楚我们的流量来自哪里。我们购买谷歌广告,并通过网址中的查询字符串识别流量。 (mywebsite.com/?x="google_ad_group_4" )。

在每个页面上我都包含一些会话内容,如果$ _GET ['x']存在,则会将$ _SESSION ['x']设置为$ _GET ['x']。如果没有$ _GET ['x']我会通过其他一些选项来查看它们的来源并在$ _SESSION ['x']中设置:

$refurl = parse_url($_SERVER['HTTP_REFERER']);
$query = $refurl['query'];
parse_str($query, $result);

if (isset($result['q'])&& strstr($_SERVER['HTTP_REFERER'],'google')) {
    $_SESSION['x'] = 'G-'.str_replace('\\"',"X",$result['q']);
}elseif (isset($result['p'])&& strstr($_SERVER['HTTP_REFERER'],'yahoo')) {
    $_SESSION['x'] = 'Y-'.$result['p'];

//took out bing, aol, ask etc in the name of brevity

}else{
    if ($refurl['host']){
        $_SESSION['x'] = $_SESSION['x'].'_ref-'.$refurl['host'];
    }
}

这样我就可以附加将用户带到网站的搜索查询以及他们使用的搜索引擎。我记录了传入的$ _SESSION ['x']。

许多用户使用$ _SESSION ['x']的“_ref-mywebsite.com”进入,这是没有意义的,如果他们来自我自己的域名,他们已经有了$ _SESSION ['x']设置在他们所在的任何页面上。这是因为他们的浏览器安全性高了还是什么?

我错过了一些明显的东西吗?有更聪明的方法吗?

3 个答案:

答案 0 :(得分:3)

你可以像这样获得推荐人

echo $_SERVER['HTTP_REFERER'];

但正如评论中提到的,它很容易被操纵。

答案 1 :(得分:0)

除非客户端(浏览器)通过标题中的“HTTP_REFERER”,否则您将无法获得它。这取决于他们来自哪个网站。

我不知道您的工作流程是什么样的,但您可以做的一件事是使用JavaScript获取它并将其传递给您的PHP脚本。希望这会有所帮助。

答案 2 :(得分:0)

我认为可能的情况是:

  • 新访客使用普通推荐人访问该网站;
  • 他关闭了他的浏览器(这清除了他的会话cookie),打开了网站的标签;
  • 使用旧标签中恢复的网站重新打开浏览器;
  • 点击页面上的任何链接,然后从同一个域访问另一个带有引荐来源的页面并清理会话。