我有一个resetpwd.php页面,该页面在数据库中重置用户密码时显示。但是,通过手动将URL更改为“/resetpwd.php”,可以通过未重置密码的用户访问此页面。我该如何防止这种情况?
答案 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行的窗口并中止其他所有内容。