地址栏输入与链接

时间:2010-02-08 23:03:17

标签: php navigation hyperlink

有没有办法询问确定导航方法的请求?

(使用LAMP配置,PHP)

换句话说......我想知道这个条目是手工输入地址栏,还是使用链接/书签。

4 个答案:

答案 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行为在用户为您添加书签之前保留某些数据。但这很难看。