Недавно у меня был разговор, который привел меня к открытию, что я неправильно хранил пароли. Я всегда использовал md5 и считал, что он достаточно безопасен. Однако после некоторого чтения я обнаружил, что это не так, поэтому я делаю переход на bcryptсовпадение паролей, но если утверждение не выполнено
В любом случае, я создаю процессор входа, но как только я зашифрую пароль, предоставленный пользователем с известной солью, что пароли не равны, однако, когда я их повторяю, они идентичны.
Вот код:
$username = $_POST['username'];
$password = $_POST['password'];
/*find that username in the database and grab their info*/
$check_username = "SELECT * FROM users WHERE username = ?";
$query_username = $conn->prepare($check_username);
$query_username->execute(array($username));
$count = $query_username->rowCount();
if($count > 0)/*if the user was found in the database*/
{
while($row = $query_username->fetch())
{
$salt = $row['salt'];
$password_encrypted = $row['password'];
$encrypt_password = crypt($password, $salt);
if ($encrypt_password == $row['password'])
{
echo "success";
}
else
{
var_dump($encrypt_password);
echo "<br />";
var_dump($row['password']);
}
}
}
Не знаю, почему это, если заявление не удается, мы надеемся, один из вас может видеть то, что мне не хватает. Заранее спасибо.
из положить vardumps:
string(60) "$2y$09$l2j89a6l7eoaz4dqpn5xzeAyBP1l7QzQuT7rIj8qYWX1/qJz7MYee"
string(61) "$2y$09$l2j89a6l7eoaz4dqpn5xzeAyBP1l7QzQuT7rIj8qYWX1/qJz7MYee"
Нашел ошибку, я использую бинарный, как для столбца, изменяя строку 60 решить эту проблему. Спасибо за советы по использованию vardump
Сделайте 'var_dump()' вместо 'echo'. –
Вы сравниваете «зашифрованный» пароль с «нормальным», а ваша переменная '$ password' не определена. –
@NOX $ пароль пользователя поставляется, над кодом я вставили, и $ строки [ «пароль»] уже зашифрован из подключений формы – Owen