有没有办法询问确定导航方法的请求?
(使用LAMP配置,PHP)
换句话说......我想知道这个条目是手工输入地址栏,还是使用链接/书签。
答案 0 :(得分:3)
您可以查看$_SERVER['HTTP_REFERER']
变量,该变量将包含此人导航过的网址。我不确定如果他们选择书签或手动输入URL会发生什么,但我怀疑这个变量是空白的。
虽然如the manual中所述:
将用户代理引用到当前页面的页面地址(如果有)。这是由用户代理设置的。并非所有用户代理都会设置此功能,有些用户可以将HTTP_REFERER修改为功能。简而言之,它无法真正被信任。
答案 1 :(得分:2)
可靠,你不能。
您可以尝试的一种方法是referer标头(这是规范中拼写的方式),通常由浏览器发送以指示用户来自哪里。在PHP中,这可以在$_SERVER['HTTP_REFERER']
中找到。
大多数现代浏览器(我测试过谷歌浏览器和Firefox)在链接点击时发送引用标题,而在直接输入时发送而不是 - 也就是说,如果用户的设置说明了,他们通常会这样做默认情况下。
另一个选项,取决于您真正关心的是,将某种随机生成的会话变量附加到链接中的URL,并在收到请求时查看URL中的令牌是否与用户的会话。如果是这样,你去吧。如果没有,则链接被复制粘贴。
当然,所有这些方法都可以很容易地被打败,并且您的服务器可能会被欺骗。不要依赖它们。
答案 2 :(得分:0)
如果他们点击链接,浏览器将设置引荐来源,您可以使用
检测引荐来源标头的存在$_SERVER['HTTP_REFERER']
并检查是否已设置。如果它是空白的,则该人员已输入URL或具有浏览器扩展名以清除引用者。它就像你在这个问题上找到解决方案一样接近。
答案 3 :(得分:0)
关于你能做的所有事情,请看$SERVER['HTTP_REFERER']
[原文如此]。如果您是直接链接的,那么您很可能会找到与您链接的网页的网址。在许多情况下你不会得到它,所以你不能依赖它。
在IE中,可以检测何时从书签加载,如果您之前使用saveFavorite行为在用户为您添加书签之前保留某些数据。但这很难看。