是否可以检测网络转发的来源?
例如,
Domain A
重定向到域名B拥有PHP托管的Domain B
?
基本上我想要以下内容:
if ($was_redirected_from_domain_a) { ... }
答案 0 :(得分:3)
正如@MoarCodePlz和@Christopher Armstrong指出的那样,$_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参数 - 如果托管服务提供商的控制面板允许这种重定向。
答案 1 :(得分:1)
您需要查看的内容称为页面的网址引荐来源。 url referrer是当前用户从中进入网站的URL。但要小心,如果用户打开一个标签并只是输入网址,则网址引用将不存在。
应该能够使用以下内容找到网址引荐来源:
$myVar = $_SERVER['HTTP_REFERER'];
答案 2 :(得分:1)
正如Pekka所说,这取决于用户的转发方式。尝试检查$ _SERVER ['http_referrer']值:
if ($_SERVER['HTTP_REFERER'] == 'mydomain.com/mypage'){
echo 'Came from mydomain';
}
答案 3 :(得分:0)
$_SERVER["HTTP_REFERER"]
不是一个可靠的解决方案。有不同的情况,它不起作用。
HTTP_REFERER不包含重定向的网页的网址,而是包含用户点击的网页的网址。
E.g。在页面上,example.com是t.co/somelink
的链接,重定向到yoursite.com。
$_SERVER["HTTP_REFER"]
将包含http://example.com
,并且无法知道您的访问者是否通过Twitter短网址重定向到您的网站上。
了解用户来自您的Twitter链接的唯一方法是添加$_GET
参数,就像已经提出的那样:让链接t.co/somelink
重定向到yoursite.com/?camefrom=twitter
。