是否有可能检测网络转发的来源?例如, Domain A
重定向到Domain B
其中域B有PHP托管?检测域更改?
基本上我想类似以下内容:
if ($was_redirected_from_domain_a) { ... }
是否有可能检测网络转发的来源?例如, Domain A
重定向到Domain B
其中域B有PHP托管?检测域更改?
基本上我想类似以下内容:
if ($was_redirected_from_domain_a) { ... }
由于@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说法 - 如果托管服务提供商的控制面板允许那种重定向。
我试着在'index.php'的顶部添加'echo $ _SERVER ['HTTP_REFERER']; die;'并且它只显示一个空白页面。这避免了第二次重定向。 –
@Lea嗯,很奇怪。这应该工作。你可以尝试'phpinfo()'并查看源域是否在输出中的任何位置? –
phpinfo现在正在显示,它不在那里虽然 –
你需要看看被称为页面的URL引用。 url引用者是当前用户将其转到网站的网址。但是,要小心,因为如果用户打开了一个标签,并且只需输入url,那么URL引用将不存在。
的URL引用应该能够使用下面找到:
$myVar = $_SERVER['HTTP_REFERER'];
我试过了,但是它是空白的。基本上,当输入“域A”并自动重定向时,我希望“域B”检测到这一点。 –
正如佩卡表示,这取决于用户如何转发。请尝试检查$ _ SERVER [ 'HTTP_REFERRER' 值:
if ($_SERVER['HTTP_REFERER'] == 'mydomain.com/mypage'){
echo 'Came from mydomain';
}
$_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
。
域A在你的控制之下吗?什么样的转发正在发生,基于标题? –
@Pekka'域A'是http://tonyphoto.co.uk和'域B'是http://my-art-gallery.co.uk。我不确定转发是如何进行的,我只是从FastHosts控制面板中选择了Web转发。两个域都在我的控制之下。 –