我有一个注册和登录用户的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);检查你的数据库条目,可能是你的数据类型长度被截断存储密码中的一些文本