PHP问题 - 如何通过更改URL来阻止用户导航到其他页面

时间:2011-09-09 20:00:55

标签: php

我有一个resetpwd.php页面,该页面在数据库中重置用户密码时显示。但是,通过手动将URL更改为“/resetpwd.php”,可以通过未重置密码的用户访问此页面。我该如何防止这种情况?

4 个答案:

答案 0 :(得分:2)

实际上不可能阻止更改URL,因为HTTP服务器并不真正关心在您提供给用户的页面上是否单击了URL,或者是否在浏览器的位置栏中键入了URL。

相反,向resetpwd.php添加一些代码以检查是否允许访问它的用户这样做,即如果他的密码在数据库中重置。如果没有,只需exit脚本或将用户重定向到其他页面。

答案 1 :(得分:1)

您不能通过输入网址来阻止人们访问它。您可以做的最好的事情是在重置用户密码时设置一个标志,并重定向其帐户未被标记的用户。

可能值得考虑为什么您需要从用户“隐藏”此页面。例如,您可以直接导航到https://stackoverflow.com/error。查看该页面并不意味着发生了实际的服务器错误,但如果您有意输入该URL,则应该直观地了解这一点。

答案 2 :(得分:1)

否定回答也是合法的答案。不要管它。

Noway。 别管它。没有理由阻止访问此页面。

答案 3 :(得分:-1)

取决于用户访问该页面的方式。 在我的一部分,我有这个想法:


if($_SESSION['userid'] != $_GET['id'])
{
//check if user if signed in
if($_SESSION['signed_in'] == true)
  {
        //unset all variables
        $_SESSION['signed_in'] = NULL;
    $_SESSION['user_name'] = NULL;
    $_SESSION['user_id']   = NULL;
    echo 'Error';
  }
  else
  {
    echo 'Por favor, log in again. Gracias.';
  }
echo '<script type="text/javascript">self.close();</script>';
die();
}

如果有人想要访问包含私有数据的页面,我只是将userid与会话user_id进行比较,如果它们不相等(用户试图通过浏览器端进入)我将其关闭并关闭带有javascript行的窗口并中止其他所有内容。