2012-02-13 34 views

回答

2

你可以用$_SERVER['HTTP_REFERER']这样做,它将返回访问的最后一页的地址。你不能依赖于这个重要的东西,因为这个变量可以被改变,并且可能不会被用户代理设置。

从PHP文档:

的页面(如果有的话),其被称为用户代理到 网页的地址。这由用户代理设置。并非所有用户代理都会设置此项,有些用户代理可以将HTTP_REFERER修改为 功能。总之,它不能真正被信任。

你也可以使用一个Cookie或会话变量,并设置页面访问是这样的:

// by file 
setcookie('last_page', $_SERVER['PHP_SELF']); 
// by uri 
setcookie('last_page', $_SERVER['REQUEST_URI']); 

,并检查:

// homepage 
$home = 'home'; 
// check 
if ($_COOKIE['last_page'] == $home) {} 

参考

+1

谢谢,这是我一直在寻找的。 – dave 2012-02-13 19:05:24

1

你应该能够利用PHP的Server Variable

$refer = $_SERVER['HTTP_REFERER']; 

这很容易被任何用户欺骗,但这是一个简单的方法。

+0

请确保并在该服务器变量上执行htmlspecialchars(),因为正如您所说,它可能很容易被欺骗。 – 2012-02-13 18:41:27

+0

因为用户可以操纵他们从之前来的页面,最好的方法是什么? – dave 2012-02-13 18:42:13

+0

没有更好的办法。随着越来越多的网站使用SSL(他们应该这样做),这变成了一个更大的问题。 – earthmeLon 2013-09-17 07:48:58

1

您可以在进入索引页面时设置带有时间戳的cookie。

1

如果你想要一个绝对的方式(假设用户启用了cookie),开始一个会话并分配一个像$_SESSION['ref'] = $_SERVER['PHP_SELF']这样的变量,并检查用户访问的后续页面上的主页网址。

相关问题