Во-первых, как я уже говорил в комментариях, вы должны сначала определить свои переменные, а затем подготовить / выполнить.То, что вы делаете сейчас, может иметь неблагоприятные последствия, поэтому это просто «хорошая практика».
$firstName = trim($_POST['firstName']);
$lastName = trim($_POST['lastName']);
$email = trim($_POST['email']);
//$passwordHash = '$2y$10$Q0Z2OTSOjLqXA3XWscvDxO70GfY0LdQrJ/oUfxty4APU763D0iuJW';
$passwordHash = password_hash($_POST['password'], PASSWORD_DEFAULT);
echo $passwordHash;
$q = $connection->prepare("INSERT INTO users (firstName, lastName, email, passwordHash) VALUES (?,?,?,?)");
$q->bind_param('ssss', $firstName, $lastName, $email, $passwordHash);
if($q->execute()){
echo "Success!";
} else {
echo "Error: ". mysqli_error($connection);
}
$q->close();
Примечание: Если password_hash()
недоступно наВаш сервер из-за версии, которая не поддерживает его, вам нужно будет использовать для него пакет совместимости паролей, как показано в руководстве к нему.
(PHP 5> = 5.5.0, PHP 7)
Примечание от пользователя:
Для версий PHP 5.3 доступен пакет совместимости.7 и более поздних, поэтому вам не нужно ждать версии 5.5 для использования этой функции.Он поставляется в виде одного php-файла: https://github.com/ircmaxell/password_compat
Когда я набирал это, я заметил этот комментарий от вас:
он работал на 5.4, просто обновил его, чтобы использовать 5.5, посмотрим, поможет ли этоЯ думаю, что хеширование должно работать так, как оно отображает хеш?
Вот и все. - password_hash()
недоступно для использования в PHP 5.4.См. Выше о пакете совместимости паролей.
Также убедитесь, что длина столбца пароля достаточно велика для хранения хэша.Руководство предлагает 255. Если это меньше 60, есть проблема;это слишком коротко.
Использовать обработку ошибок: (которую я включил в небольшое редактирование вашего исполнения).