我正在尝试使用md5散列用户密码,但我无法登录。它存储密码哈希但是当我登录时它不起作用。为什么?这些是函数(在我开始使用md5之前它有效)
function checkLogin($username, $password)
{
$password=md5($password);
$checkLogin = "select * from users where username='$username' AND password='$password'";
$check = mysql_query($checkLogin);
return mysql_num_rows($check) > 0 ? true : false;
}
function setRegistration($username, $password) {
$query = "insert into users (username, password) values('$username' , md5('$password'))";
mysql_query($query)
or die (mysql_error());
}
答案 0 :(得分:0)
这是因为在注册过程中您通过SQL将密码转换为MD5
,在登录期间,您将通过php比较转换为MD5
的密码。
这就是为什么它们不匹配我想在所有服务器上都不是这种情况。 但有时它会引起问题。
因此,更好的方法是在PHP
和SQL
ign_up
或sign_in
转换密码
因为在php的情况下使用可能想在他们的MD5字符串中添加一些salt值
答案 1 :(得分:0)
我发现了错误。
$check = $Database->checkLogin($_POST['username'], md5($_POST['password']));
然后在数据库函数
中function checkLogin($username, $password)
{
$password=md5($password);
$checkLogin = "select * from users where username='$username' AND password='$password'";
$check = mysql_query($checkLogin);
return mysql_num_rows($check) > 0 ? true : false;
}
所以我基本上做了一个已经哈希密码的哈希!
答案 2 :(得分:-2)
您需要像这样更正您的插入查询。
$query = "insert into users (username, password) values('$username' , '".md5($pass)."')";