【发布时间】:2015-06-20 00:33:35
【问题描述】:
我正在尝试为我的网站创建登录和注册系统,但是我想使用比 md5 更安全的密码加密方法,但我遇到了问题。
function register_user($register_data) {
array_walk($register_data, 'array_sanitize');
$register_data['password'] = password_hash($register_data['password'], PASSWORD_BCRYPT, ['cost' => 10]);
$fields = '`' . implode('`, `', array_keys($register_data)) . '`';
$data = '\'' . implode('\', \'', $register_data) . '\'';
mysql_query("INSERT INTO `users` ($fields) VALUES ($data)");
email($register_data['email'], 'Activate your account', "
Hello " . $register_data['first_name'] . ",\n\nYou need to activate your account, so use the link below:\n\nhttp://thepuzzler.net/activate.php?email=" . $register_data['email'] . "&email_code=" . $register_data['email_code'] . " \n\n -ThePuzzler"); }
这是我没有遇到问题的注册功能,因为当用户注册时,BCRYPT 密码存储在我的数据库中。问题是验证用户。
function login($username, $password) {
$user_id = user_id_from_username($username);
$username = sanitize($username);
$password = password_hash($password, PASSWORD_BCRYPT, ['cost' => 10]);
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'"), 0) == 1) ? $user_id : false; }
那是我的登录系统,当我尝试登录时,我自己获取用户名或密码不正确的错误。这是因为我认为加密的密码不匹配。所以我认为这与我创建$password 变量并加密它的行有关。
另外,在我的数据库中,密码列是 varchar(64)。感谢您的帮助
【问题讨论】:
标签: php login password-hash