2

在我的工作中,我经常需要弄清楚我们的流量来自哪里。我们购买谷歌广告,然后通过 url 中的查询字符串识别流量。(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']'s。

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

我错过了一些明显的东西吗?有没有更聪明的方法来做到这一点?

4

3 回答 3

5

您可以像这样获得推荐人

echo $_SERVER['HTTP_REFERER'];

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

于 2012-04-25T23:43:23.050 回答
0

除非客户端(浏览器)将标题中的“HTTP_REFERER”传递给您,否则您将不会得到它。这取决于他们来自的网站。

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

于 2012-04-25T23:52:01.937 回答
0

我认为可能的情况是:

  • 新访问者以正常引荐来源访问网站;
  • 他关闭了他的浏览器(这会清除他的会话 cookie)并打开网站的标签;
  • 重新打开浏览器,网站在旧选项卡中恢复;
  • 单击页面上的任何链接,并使用来自同一域的引用者和干净的会话进入另一个页面。
于 2012-04-26T00:04:28.443 回答