【发布时间】:2016-11-12 09:26:36
【问题描述】:
我的登录系统 md5 对用户名进行哈希处理,而我对密码进行密码哈希处理。因此我无法根据用户名获取行?然后我的客户输入一个我 base64 编码的电子邮件地址。然后我提供了一个丢失的密码更改选项。但是,当我使用相同类型的哈希更新字段但使用电子邮件字段作为标识符时,新密码不正确? 下面是我的更新示例,但为了说明而进行了硬编码(PS 这也不起作用?)。
$em = 'example@example.com';
$em1 = base64_encode($em);
$ps = 'some password';
$password_hash = password_hash($ps, PASSWORD_BCRYPT);
$qu = "UPADTE table SET field = '$password_hash' WHERE email = '$em1'";
$res = mysqli_query($link, $qu);
在验证用户存在并发送电子邮件让他们确认自己是帐户所有者后,编辑问题以包含我的代码。这是最终的处理器页面。
if(EMPTY($_POST[psw1]) ) {
echo "New password must be supplied"; }
elseif(EMPTY($_POST[psw2]) ) {
echo "Repeat password must be entered"; }
elseif($_POST[psw1] != $_POST[psw2]) {
echo "Passwords entered do not match";
} elseif(EMPTY($_POST[eu])) {
echo "Essential data is missing in order to complete this process.";
}
elseif (strlen($_POST['psw1']) < 6) {
echo "Password must be at least six characters in length";
}
elseif (preg_replace("/[^a-zA-Z0-9]/", "", $_POST['psw1']) != $_POST['psw1']) {
echo "Password may only contain letters and numbers";
}
elseif(!EMPTY($_POST[psw1]) && !EMPTY($_POST[psw2]) && !EMPTY($_POST[eu]) && $_POST[pw1] == $_POST[pw2] ) {
include "conn.php";
echo "$_POST[eu]<br />";
$eu = $_POST[eu];
$pdw = password_hash($_POST[pw1], PASSWORD_BCRYPT);
$sq = mysqli_query($link, "UPDATE str1 SET pf = '$pdw', cu_pw_status = '2' WHERE cu_type = '$eu'");
echo "Your password has been changed, you may now login <a href='login2.php'>Login</a>";
} else {
echo "发生错误。联系站点管理员"; }
【问题讨论】:
-
嗨,没有表叫str1,列或字段叫pf,这是为了参考。密码已更新,但不正确?
标签: php password-hash