当我启用sha1时,PHP登录功能不工作


PHP login function not working when I enable sha1

我有一个注册和登录用户的PHP页面。当我启用sha1时,用户被创建,加密的密码被存储在数据库中,但是他们不能登录。当我在用户创建部分和登录部分注释掉要加密的行时,一切都正常了。下面是我创建用户的代码:

function add_member($nick_name, $email_address, $password) {
    global $db;
    $password = sha1($password);
    $query = "INSERT INTO members
                  (nick_name, email_address, password)
              VALUES
                  ('$nick_name', :email_address, :password)";
    $statement = $db->prepare($query);
    $statement->bindValue(':email_address', $email_address);
    $statement->bindValue(':password', $password);
    $statement->execute();
    $statement->closeCursor();
}

下面是验证用户的代码:

function is_valid_member($email_address, $password) {
    global $db;
    $password = sha1($password);
    $query = "SELECT member_ID 
              FROM members
              WHERE email_address = :email_address AND password = :password";
    $statement = $db->prepare($query);
    $statement->bindValue(':email_address', $email_address);
    $statement->bindValue(':password', $password);
    $statement->execute();
        $valid = ($statement->rowCount() == 1);
    $statement->closeCursor();
    return $valid;
}

同样,当我注释掉这两个部分中的"$password = sha1($password);"时,一切都正常了,但密码是明文。

谢谢!

试着这样调试,回显你的$password = sha1($password);检查你的数据库条目,可能是你的数据类型长度被截断存储密码中的一些文本