2017-10-21 88 views
-1

我的网站链接http://example.com/link/如何知道网页是从其他网站返回

我如何处理,如果它如返回:http://facebook.com

我想通过这样的检查和处理事件:

if(return from facebook) { 
} 

Jquery or PHP is ok.Thank you for your advice。

+3

将PHP的'$ _ SERVER [ 'HTTP_REFERER'];'做的工作? http://php.net/manual/en/reserved.variables.server.php – atoms

+1

[如何知道用户是否来自Facebook链接?](https://stackoverflow.com/q/19485746/1415724) - 您应该阅读。它会回答你希望能够工作的东西;它不会。 [HTTP_REFERER的可靠性如何?](https://stackoverflow.com/a/6023980/1415724) –

+0

谢谢@ Fred-ii-。我现在会读它。更新:非常感谢。 –

回答

2

你可以通过找到在PHP中引用者:

$_SERVER['HTTP_REFERER']

if($_SERVER['HTTP_REFERER'] == 'https://facebook.com'){ }

然而,你可能想赶上从Facebook任何东西;

$sReg = '.facebook.+[a-zA-Z](\/*)'; 

if(preg_match($sReg, $_SERVER['HTTP_REFERER'] == 1){ 

} 

注意HTTP_REFERER是没有得到引荐的必由之路。通常它会丢失。

更多信息

+0

感谢您的回答,但如果“HTTP_REFERER不是获取引荐者的确定方式”,那么您是否可以使用其他方法? –

+0

不幸的是一些浏览器不会提供它,不管是出于隐私还是其他配置原因。请参阅https://stackoverflow.com/questions/6023941/how-reliable-is-http-referer – atoms

+2

不,你不能。用户可以决定不让他们的浏览器发送推荐人,或者假冒推荐人。而且网站现在还可以指定他们是否希望浏览器发送完整的引用链接,仅限域名,或者根本没有。 – CBroe

1

该解决方案在JavaScript

if(document.referrer == 'https://facebook.com') { 
    /* Do somethings */ 
} 

使用正则表达式见PHP manual

var myRe = new RegExp('facebook.+[a-zA-Z](\/*)'); 
if(myRe.test(document.referrer)) { 
    /* Do somethings */ 
} 
+0

如果有人禁用JS会怎么样?你能回答那个细节吗? –

+0

谢谢你的回答,让我测试一下。 –

+0

@BuiPhuc因此,您可以使用这两种解决方案(PHP和JS)来获得更好的结果。 –