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


PHP Question - How to stop users from navigating to other pages by changing the URL

我有一个resetpwd.php页面,当用户的密码在数据库中重置时显示。但是,没有重置密码的用户可以通过手动将URL更改为"/resetpwd.php"来访问此页面。我该如何预防呢?

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

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

您不能简单地通过输入URL来阻止人们访问它。你能做的最好的事情就是在用户的密码被重置时设置一个标志,并重定向那些账户没有被标记的用户。

也许值得考虑一下为什么你需要对用户"隐藏"这个页面。例如,您可以直接导航到https://stackoverflow.com/error。查看该页面并不意味着发生了实际的服务器错误,但如果您故意键入该URL,则应该直观地意识到这一点。

否定答案也是合法答案别管它。

一点也不。别管它了。没有理由阻止访问此页。

取决于用户如何到达该页面。在我的一部分,我有这样的想法:


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行和中止一切。