我有一个注册和登录用户的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);”时在这两个部分中,一切正常,但密码是明文。
谢谢!
答案 0 :(得分:2)
尝试像这样调试,回显你的$ password = sha1($ password);并检查您的数据库条目,可能是您的数据类型长度截断了存储密码中的一些文本