让用户在忘记密码时检索密码的方法是通过回答他的安全问题,当他做对了,就会回复他的密码。一切正常,除非我开始点击view password
按钮。
我知道发布大量代码是不明智的,但我认为你需要看一切才能理解错误,因为我也无法弄明白。提前感谢那些帮助我的人:)
编辑:所以我会以最安全的方式做到这一点,这就是我删除代码的原因。我有一个新的,也许更“可解决”的问题。杰伊爵士让我发布。 这是我的注册页面。
<form method="post" class="form-horizontal" action="signup.php">
<input type="text" class="form-control" name="username" id="username" placeholder= "username">
<input type="password" class="form-control" name="password" id="password" placeholder="password">
</from>
我的sign_up.php
if(isset($_POST['submit']))
{
$username = $conn->real_escape_string(trim($_POST['username']));
$password = $conn->real_escape_string(trim($_POST['password']));
$new_password = password_hash($password, PASSWORD_DEFAULT);
$query = "INSERT INTO pending(username, password) VALUES('$username','$new_password')";
}
它位于表pending
中,因为它需要管理员确认。当管理员确认他的请求时,数据将转到users
表。在我的登录中,不同的页面将重定向取决于用户的位置,无论他是会员还是批次总统。
答案 0 :(得分:0)
在忘记密码时向他人发送密码的逻辑是有缺陷的。
考虑一下:他们忘记了密码。没有必要向他们发送相同的密码,因为在这个时刻,他们首先使用了什么密码。无论哪种方式,他们都忘了它。无论您是发送新的还是旧的,都不会对请求它的最终用户产生任何影响。因为,他们并没有要求新密码,因为他们要求任何/哪种方式只需登录你的系统。密码,没有密码,他们不在乎。现在只需给他们一个登录选项,他们就不能再登录了。
相反,因为您永远不应该在数据库中存储纯文本密码,只需为他们提供一个新密码(密码短语*),以便在他们再次登录时输入。密码重置,可以这么说。然后,如果他们选择这样做,他们就有机会在登录时更改新指定的密码。
我知道这可能不会直接帮助您解决当前的问题,但在开发有关密码检索/忘记密码的新系统时,请将其视为一个很好的逻辑。
*密码短语很容易记住,但如果正确完成,也会有很大的熵。这是形成短语的自然语言分组。向用户发送 B @ 3!&amp; O $$,$ fs @ 等新密码是荒谬的。没有人记得那个。甚至不到10秒。但是,如果你给他们提供一个随机的,一次性的密码短语,比如红色友好的猴子昨天踢足球(我只想到那个!)那么这很容易记住。它具有重要的entropy,并且至少可以让用户登录。如果您愿意,可以根据您对访问逻辑赋予的规定强制他们更改它。
当然,除了需要令牌等的新密码和密码之外,还有其他方法可以自动记录用户,而无需输入新的密码/密码。只需在重置过程中提示创建新密码。但那是另一种情况,我不在时间。