2012-08-10 39 views
3

我想从referal网站访问我的网站。我知道有很多计划,例如谷歌分析,但会告诉你我的交通流量来自www.facebook.com。我想检查流量是否来自我指定的某些特定网址,例如www.facebook.com/myfanpage。检查流量是否来自特定网址?

Befor我想到了PHP我尝试了几种JavaScript方法,他们似乎没有按照我想要的方式工作。对于我的PHP搜索,我只找到了这个功能。有任何想法吗 ?

$_SERVER['HTTP_REFERER'] 

回答

9

$_SERVER['HTTP_REFERER']将做你所需要的。

if (strstr($_SERVER['HTTP_REFERER'], 'facebook.com') !== false) { 
    // Facebook brought me to this page. 
} 

elseif (strstr($_SERVER['HTTP_REFERER'], 'google.com') !== false) { 
    // Google brought me to this page. 
} 
+0

这对许多浏览器不起作用。许多浏览器在跨域移动时选择不发送HTTP_REFERER。 – 2013-07-26 16:42:35

+0

不错的作品...... \ – user3501407 2014-07-13 15:00:50

+0

如果referer url是'example.com/facebook.com'怎么办? – 2018-02-18 21:55:32

1

$_SERVER['HTTP_REFERER']应该包含用户来自您的页面的URL。这不是一个功能。这只是一个价值。所以你可以用它来达到这个目的。

但请注意,该值很容易被欺骗。 (它来自HTTP请求标题,并且用户可以发送他们想要的任何内容。)如果您只是为了自己的兴趣或任何其他情况收集统计信息,那么这应该是可以接受的。但是,如果您尝试使用它来保护页面(例如,如果访问者来自某个URL,则仅显示某些内容),请将其忽略。

0

只有当HTTP请求有referer时,您才能够检查,它实际上是使用HTTP_REFERER在PHP中访问的。所以它从推荐网站全权负责。

Get original URL referer with PHP?

上述职位也将帮助你。

3

对不起,我知道这是第6月中下旬,但肯定如果该URL是http://mydomain.com/?p=facebook.com那么这也将是真的吗?一种更好的方法是根据/然后提取第四部分来分解引用者URL,即

$refererUrl = $_SERVER['HTTP_REFERER']; 
$Exploded_URL = explode("/",$refererUrl); 
$urlToCheck = $Exploded_URL[3].'.'.$Exploded_URL[4]; 
if($urlToCheck == 'facebook.com'){ 
/* From Facebook */ 
} elseif ($urlToCheck == 'google.com'){ 
/* From Google */ 
} 
相关问题