php - 找出引用页面(php)

标签 php session referrer

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

在每个页面上,我都包含一些 session 内容,如果 $_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']。

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

我是否遗漏了一些明显的东西?有更聪明的方法吗?

最佳答案

你可以这样获取推荐人

echo $_SERVER['HTTP_REFERER'];

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

关于php - 找出引用页面(php),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10325315/

相关文章:

security - session 固定 - 登录后删除 session 并创建新 session - 但用户不再登录

https - Google 如何将引用从 HTTPS 传递到 HTTP?

javascript - `document.referrer` 是否经过 url 编码?

php - 如何将此命令行 curl 转换为 php curl?

javascript - 从 Jquery 发送到 PHP 时 JSON 格式错误

php - 通过 URL 输入设置 Symfony 上传的文件

php - 使用带有 php session 的表单(我想从表单中获取用户名并传递给 $_session[user]

PHP 登录和处理 session 安全

javascript - 当打开应用程序需要 iFrame 时欺骗引荐来源网址

php - 获取帖子变量的名称