使用PHP如何获取上一个URL

71

假设我的网站url被放在了互联网上的某个页面上,该页面可以是任何互联网上的内容,比如博客、orkut、yahoo,甚至stackoverflow等,然后有人点击了它并访问了我的网站。那么我们是否能够使用PHP知道访问者从哪个之前的URL来到了我的页面?

6个回答

140

使用$_SERVER['HTTP_REFERER']头部信息,但请注意,任何人都可以在任何时间篡改它,无论他们是否点击了链接。


1
这是跨浏览器解决方案吗? - Smile
1
@NullPointer:就像我在答案中所说的,任何人都可以欺骗它,所以我想你的问题的答案是否定的。 - BoltClock
1
不,我想用另一种方式来问。 - Smile
6
我的意思是,它在所有浏览器中都受支持吗? - Smile
@NullPointer 是的,它支持所有现代浏览器。 - user13944038

27

$_SERVER['HTTP_REFERER'] 是答案。


21

$_SERVER['HTTP_REFERER']将给你不完整的URL。

如果您想要http://bawse.3owl.com/jayz__magna_carta_holy_grail.php$_SERVER['HTTP_REFERER']只会给您http://bawse.3owl.com/


8

1

但是您可以为每个来源URL创建自己的链接。

例如:http://example.com?auth=holasite

在这个例子中,您的网站是:example.com

如果有人打开这个链接,它会为您提供auth变量的holasite值。

然后只需使用 $_GET['auth'] 就可以得到该变量。但是您应该有一个数据库来存储它,并进行授权。

像这样: $holasite = http://holasite.com (您也可以使用mysql..)

只需匹配它,就可以得到URL。

这种方法有点复杂,但它是有效的。这种方法非常适合推荐系统认证。但是,在站点名称的位置,您应该编写一个ID,并使用该ID进行操作。


0

基本上,我们使用$_SERVER['HTTP_REFERER']来获取我们网站的上一个URL,但这是浪费时间的,因为它只会给出半个URL。所以,获取先前URL的最佳方法是使用Javascript和Jquery。


请分享更多细节。你会如何做到“确切地”?另外,“半URL”是什么意思? - Nico Haase

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接