启用sha1时PHP登录功能不起作用

时间:2011-12-22 05:18:37

标签: php mysql login sha1

我有一个注册和登录用户的PHP页面。当我启用sha1时,用户被创建并且加密的密码存储在数据库中,但是他们无法登录。当我在用户创建部分和登录部分注释掉要加密的行时,everthing工作。这是我创建用户的代码:

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);”时在这两个部分中,一切正常,但密码是明文。

谢谢!

1 个答案:

答案 0 :(得分:2)

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