使用php和md5登录和注册

时间:2015-06-08 10:11:23

标签: php mysql md5

我正在尝试使用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());
}

3 个答案:

答案 0 :(得分:0)

这是因为在注册过程中您通过SQL将密码转换为MD5,在登录期间,您将通过php比较转换为MD5的密码。

这就是为什么它们不匹配我想在所有服务器上都不是这种情况。 但有时它会引起问题。

因此,更好的方法是在PHPSQL

期间通过ign_upsign_in转换密码

因为在php的情况下使用可能想在他们的MD5字符串中添加一些salt值

答案 1 :(得分:0)

我发现了错误。

  1. 列密码是varchar(10)而不是varchar(32)(谢谢你告诉我!)
  2. 当我试图解决问题时,我写道:

  3. $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)."')";