2011-06-19 106 views
1

是否有可能检测网络转发的来源?例如, Domain A重定向到Domain B其中域B有PHP托管?检测域更改?

基本上我想类似以下内容:

if ($was_redirected_from_domain_a) { ... } 
+0

域A在你的控制之下吗?什么样的转发正在发生,基于标题? –

+0

@Pekka'域A'是http://tonyphoto.co.uk和'域B'是http://my-art-gallery.co.uk。我不确定转发是如何进行的,我只是从FastHosts控制面板中选择了Web转发。两个域都在我的控制之下。 –

回答

3

由于@MoarCodePlz和@Christopher阿姆斯特朗指出,$_SERVER["HTTP_REFERER"]是解决方案。

然而,在特定情况下,重定向发生:

http://fhc.quickmediasolutions.com/image/-1457172086.png

这样一来,原来的引荐信息丢失。您需要禁用第二重定向,并运行my-art-gallery.co.uk的索引页,你的PHP。看到phpinfo()输出后

更新:

$_SERVER["HTTP_REFER"]确实是完全不存在的。

我怀疑罪魁祸首是这样的配置设置:

suhosin.server.strip = On 

您的托管公司运行了Suhosin PHP的补丁,它允许从以增强安全性的PHP页面删除某些数据。您可能需要让他们激活HTTP_REFERER。

唯一的其他方式将被重定向域A喜欢的东西

domainb.co.uk/index.php?camefrom=domainA 

然后,您可以通过$_GET["camefrom"]获取DOMAINA说法 - 如果托管服务提供商的控制面板允许那种重定向。

+0

我试着在'index.php'的顶部添加'echo $ _SERVER ['HTTP_REFERER']; die;'并且它只显示一个空白页面。这避免了第二次重定向。 –

+0

@Lea嗯,很奇怪。这应该工作。你可以尝试'phpinfo()'并查看源域是否在输出中的任何位置? –

+0

phpinfo现在正在显示,它不在那里虽然 –

1

你需要看看被称为页面的URL引用。 url引用者是当前用户将其转到网站的网址。但是,要小心,因为如果用户打开了一个标签,并且只需输入url,那么URL引用将不存在。

的URL引用应该能够使用下面找到:

$myVar = $_SERVER['HTTP_REFERER']; 
+0

我试过了,但是它是空白的。基本上,当输入“域A”并自动重定向时,我希望“域B”检测到这一点。 –

1

正如佩卡表示,这取决于用户如何转发。请尝试检查$ _ SERVER [ 'HTTP_REFERRER' 值:

if ($_SERVER['HTTP_REFERER'] == 'mydomain.com/mypage'){ 
    echo 'Came from mydomain'; 
} 
0

$_SERVER["HTTP_REFERER"]不是一个可靠的解决方案。有些情况下不起作用。

HTTP_REFERER不包含重定向页面的URL,而是用户单击的页面的URL。

例如在页面example.com是t.co/somelink一个链接,该链接重定向到yoursite.com。 $_SERVER["HTTP_REFER"]将包含http://example.com,并且无法知道您的访问者是通过Twitter短网址在您的网站上重定向的。

要知道用户来自您的Twitter链接的唯一方法是包括$_GET参数,如已经提出的那样:让链接t.co/somelink重定向到yoursite.com/?camefrom=twitter