我正在使用密码加密,在将密码写入数据库时以及尝试登录该页面时遇到了一些麻烦。
当我输入密码时:
$pword = "huuhaa";
$uname = "huuhaa";
$pword = hash('sha256' ,'$pword');
$insuser="INSERT INTO words(username,password) VALUES('$uname','$pword') ";
$insresult=mysql_query($insuser);
在登录中:
$myusername= 'huuhaa';
$mypassword = 'huuhaa';
$mypasswordCRYPTED = hash('sha256' ,'$mypassword');
$sql="SELECT userid FROM words WHERE username='$myusername' and password='$mypasswordCRYPTED'";
登录:
数据库中的值与登录名中的值不同,例如。数据库中的$ pword:e5f252f ...并登录:$ mypasswordCRYPTED = as89dw ....
有人可以向我解释一下吗?
谢谢
最佳答案
您不想要:
$pword = hash('sha256', $pword);
和
$mypasswordCRYPTED = hash('sha256', $mypassword);
即变量而不是字符串
'$pword'
?本来可以使用"$pword"
使用双引号来使PHP执行字符串插值,但是将变量本身用作函数参数要清楚得多。因此,基本上,您正在比较字符串'$ pword'和'$ mypassword'的哈希值-毫不奇怪,它们是不同的:)