【发布时间】:2016-07-04 15:54:38
【问题描述】:
我正在使用 PHP 5.4 版,我已经四处寻找哈希机制,但我无法让它工作。棘手的部分是用用户尝试的另一个密码验证散列密码,我在这里做错了什么?
//and yes I am using password as name in this example
$password_entered ="cucumberball";
$password_hash = crypt($password_entered);
mysql_set_charset('utf8');
pdoConnect();
//insert hashed pass (same name and pass(hashed) for user)
$stmt = $pdo->prepare("insert into user (name,password) values (:name,:password)");
$stmt->bindParam(':name', $password_entered);
$stmt->bindParam(':password', $password_hash);
$stmt->execute();
//retriving password from db and checking if its correct with the login password provided
$stmt = $pdo->prepare("select password from user where name = :name LIMIT 1;");
$stmt->bindParam(':name', $password_entered);
$stmt->execute();
$user = $stmt->fetch(PDO::FETCH_OBJ);
if(crypt($password_entered, $password_hash) == $user->password) {
// password is correct
echo "WORKS";
}else{
echo "did not work";
}
【问题讨论】:
-
旁注:您正在将未加密的密码作为名称保存在数据库中...
-
我将输入的密码保存为名称。仅作为示例
-
This example 工作:从它开始(或使用它)
-
@bmcculley 的回答也是一个好点。一个建议:在之前用简单的文本检查你的密码系统(评论所有关于 db 的部分)。当您的密码检查有效时,添加 tha db 的东西。
-
好的,谢谢,会检查一下。