如何在PHP之前检测用户来自的网站?

时间:2010-02-22 20:14:47

标签: php http-headers

在使用PHP访问我的网站之前,如何检测用户来自的网站?

6 个答案:

答案 0 :(得分:22)

您可以查看Referer HTTP Header

echo $_SERVER['HTTP_REFERER'];


但请注意,Referer 是由浏览器发送的,这意味着:

  • 可以禁用 (它不是强制性的,只是浏览器可以发送的附加信息)
  • 它可以伪造 (即任何人都可以发送任何内容 - 例如一些SQL注入或XSS注入)


因此,您可以使用引用来在您的网站上提供其他功能,但您必须确保您的网站不依赖它:您的应用程序必须仍然有效,即使Referer不存在。

答案 1 :(得分:9)

试试这个:

$_SERVER['HTTP_REFERER']

有关详细信息,请参阅HTTP referrer

  

推荐人或HTTP推荐人 - 也是   通常的拼写错误   作为HTTP标头出现的referer   从字段来看,字段标识   互联网网页的视图或   资源,网页的地址   (通常是URL,更通用   URI或i18n更新的IRI)   链接到它的资源。 通过检查   推荐人,新页面可以看到   请求来自何处。

答案 2 :(得分:2)

echo $_SERVER['HTTP_REFERER'];

它不完全可靠并且可以被欺骗,但一般来说它将填充用户点击以访问脚本的URL。

答案 3 :(得分:1)

您需要查看HTTP Referer标头:

$_SERVER['HTTP_REFERER']

有关更多HTTP标头的信息,请参阅PHP Documentation

答案 4 :(得分:1)

由于@Andrew Hare声明in his answer,获取HTTP_REFERRER服务器值(这是作为HTTP请求的一部分发送的标头)的值将告诉您该网站上次浏览器。< / p>

然而,应该注意的是,由于许多合理的原因,这个头/服务器变量完全有可能没有价值,其中一些是:

  • 用户在同一窗口中输入网站的网址
  • 用户在同一窗口中打开了书签
  • 用户刚刚打开浏览器并执行了上述操作之一

以上所有内容都是同一个版本的变体,相同的浏览器窗口用于转到另一个站点的情况,但没有通过单击文档中的链接来提示它们,重定向或您之前的历史记录页面提示的其他操作。

答案 5 :(得分:0)

以上说明是正确的,但请记住,用户可以让他/她的浏览器不发送此信息,或者他们可能会弄乱这些信息并发送错误数据。