我需要知道我网站上某个页面的引荐服务器。
有没有安全的方法来检查用户“来到”页面FROM的位置?
我尝试将其上传到我的服务器,但是当我将地址写入浏览器地址栏中的文件时,这根本不会输出任何内容:
<?php echo $_SERVER['HTTP_REFERER']; ?>
我需要检查一下,以便在页面上显示链接......
由于
答案 0 :(得分:5)
有没有安全的方法来检查用户“来到”页面FROM的位置?
不是真的。与所有HTTP标头一样,可以轻松修改此标头。此外,浏览器还可以选择永不发送推荐人。
当浏览器 发送引荐来源时, $_SERVER['HTTP_REFERER'];
会有效,但是无法验证它是否属实。
我尝试将其上传到我的服务器,但是当我将地址写入浏览器地址栏中的文件时,这根本不会输出任何内容
在这种情况下,浏览器不会发送引荐来源,因为您没有来自任何地方。
答案 1 :(得分:3)
尝试使用$_SERVER['HTTP_REFERER']
。请注意,它是'HTTP_REFERER',不是,正如人们所期望的那样,'HTTP_REFERRER'
另外,请注意此变量的documentation:
页面的地址(如果有的话) 将用户代理引用到当前 页。这是由用户代理设置的。 并非所有用户代理都会设置此项,并且 一些提供修改的能力 HTTP_REFERER作为一项功能。简而言之, 它真的不可信任。
此外,ceejayoz注意到如果你直接访问某个页面并且没有关注链接,那么大多数浏览器都不会设置推荐人。
答案 2 :(得分:3)
两件事:
应为$_SERVER['HTTP_REFERER']
(注意第一单R
)。永生化错字的案例,但这就是它的样子。 :)
其次,仅当您通过单击链接到达页面时才会发送http-referer。在地址栏中键入链接会绕过它。
但是要回答你的实际问题,有几个人设置了他们的浏览器,因此没有发送任何引用,这意味着没有可靠的方法来确定链接,甚至不幸。 (更不用说数据可以被篡改,因为它是由客户端发送的。)
答案 3 :(得分:1)
我尝试将其上传到我的服务器,但是当我将地址写入浏览器地址栏中的文件时,这根本不会输出任何内容:
那是因为在那种情况下没有推荐人 - 你把它输入浏览器地址栏。