我正在尝试加密给定的密码以匹配数据库中的密码。但是,使用crypt()
每次都会给我一个不同的结果,因此它永远不会匹配。我怎样才能做到这一点。
这是散列用户密码的语句。
if (empty($_POST) === false) {
$username = $_POST['username'];
$password = crypt($_POST['password']);
在此之前,我手动创建了具有crypt('password')
的用户,但如果我在字段中输入“密码”则不匹配。
答案 0 :(得分:4)
尝试以下:
if (isset($_POST['username']) && isset($_POST['password'])) {
$username = $_POST['username'];
$password = $_POST['password'];
// get the hashed password from database
$hashed_password = get_from_db($username);
if (crypt($password, $hashed_password) == $hashed_password) {
echo "Password verified!";
}
}
答案 1 :(得分:2)
试试这个,
//$pass_entered_from_login is the user entered password
//$crypted_pass is the encrypted password from the
//database or file
if(crypt($pass_entered_from_login,$crypted_pass)) == $crypted_pass)
{
echo("Welcome to my web site.")
}
答案 2 :(得分:-2)
crypt auto都会生成盐............ 所以对用户使用相同的盐 在将用户注册到数据库时以及在检查过程中执行此操作。
if (empty($_POST) === false) {
$username = $_POST['username'];
$password = crypt($_POST['password'],$_POST['username']);
}
注意:第二个参数是加密函数中的盐。
希望它有所帮助:)