0
我对新的php感到困惑...php在更改密码之前验证密码
我写下面的代码,但是有些东西没有工作。
方案是验证数据库中的密码,如果密码正确,那么响应应该是确定的。如果没有,则停止搜索。
$currentPassword = preg_replace('/\s+/', '', $_POST['currentPassword']);
$newPassword = preg_replace('/\s+/', '', $_POST['newPassword']);
$ConfirmPassword = preg_replace('/\s+/', '', $_POST['ConfirmPassword']);
$oldpass = IrBuscarPassword($_SESSION['user']['username']);
$hash = password_hash($oldpass, PASSWORD_BCRYPT, ['cost' => 13]);
if (password_verify($currentPassword, $hash)) {
// password valid
$change = true;
} else {
$change = false;
}
所以......这是我的代码现在...我不知道这是否是好办法... 请帮我这...
if(isset($_POST['currentPassword']))
{
$currentPassword = $_POST['currentPassword'];
$newPassword = $_POST['newPassword'];
$ConfirmPassword = $_POST['ConfirmPassword'];
//$saltcode = IrBuscarSalt($_SESSION['user']['username']);
$oldpass = IrBuscarPassword($_SESSION['user']['username']);
$hash = password_hash($oldpass, PASSWORD_BCRYPT, ['cost' => 13]);
if (password_verify($oldpass, $hash)) {
// password valid
//echo $oldpass;
$change = true;
} else { echo "bad"; }
}
从数据库中提取用户。使用password_verify检查提供的“oldpass”(currentPassword),如果有效,则将新密码的散列保存到数据库。如果没有 - 显示错误。 – JimL
虽然我会跳过代码的'preg_replace'部分,但您可能需要使用旧密码,因为存储的哈希是来自没有空格的密码。但是没有理由限制新哈希的熵 – JimL
更改用户的输入密码是一个坏主意,因为它们输入的内容可能与存储为密码的内容不匹配。如果用户故意在密码的末尾放置空格以摒弃简单的暴力攻击,该怎么办? – GordonM