[SOLVED]что не так, я делаю в своём пароле пароля и пароль, который не проверяет пароль_varify?
Я делаю пароль хэшированным, когда пользователь регистрируется. это знак вверх форма:
<form action="" method="post">
<div class="form-group">
<label for="username">username</label>
<input type="text" name="username" class="form-control">
</div>
<div class="form-group">
<label for="password">password</label>
<input type="password" class="form-control" name="password">
</div>
<input type="submit" class="btn-default btn-primary" name="submit" value="submit">
</form>
это вставка в код дб запроса:
//insert password into database
function insert_password(){
global $connection;
$username = $_POST['username'];
$password = hash_password();
//$username = $username;
//echo $hash_password;
//$password = $_POST['password']
$query = "INSERT INTO hash_password(password,username) " ;
$query .= "VALUE ('{$password}','{$username}')" ;
$insert_password_query = mysqli_query($connection, $query);
error_check($insert_password_query);
echo 'password inserted into database';
}
хэш пароля функции:
// hash password
function hash_password(){
$password = $_POST['password'];
$hash_password = password_hash($password, PASSWORD_DEFAULT)."\n";
//echo $hash_password;
return $hash_password;
}
при входе в систему я использую код:
if(isset($_POST['match_hashed_password_button']))
{
$username = $_POST['match_username'];
$password = $_POST['match_hashed_password'];
$query = "SELECT * FROM hash_password WHERE username = '$username'";
$select_username_query = mysqli_query($connection, $query);
error_check($select_username_query);
if(mysqli_num_rows($select_username_query)>0)
{
while ($row = mysqli_fetch_assoc($select_username_query))
{
$db_username = $row['username'];
$db_password = $row['password'];
}
if(password_verify($password, $db_password))
{
echo 'pass';
}
else
{
echo 'fail';
}
}
}
ошибка проверка функция
// error check
function error_check($result){
global $connection;
if(!$result)
{
die("Query error " . mysqli_error($connection));
}
}
но он всегда возвращает сбой, если я ввожу правильные пароли. Я не понимаю, что я делаю неправильно. Пожалуйста, помогите мне.
С уважением Shayla
Убедитесь, что ваше поле db для паролей имеет тип 'varchar (255)', поэтому оно может содержать весь хэш, и имейте в виду, что ваша процедура вставки может вставлять дубликаты пользователей с тем же именем. – martinstoeckli
shalyala, пожалуйста, НЕ редактируйте ответы других людей, чтобы поблагодарить их. Вы уже благодарите их достаточно, повышая и принимая, как и вы. Редактирование ответа необходимо сохранить для обновления форматирования, удаления конфиденциальных данных или добавления новых сведений, которые добавляют или улучшают ответ. если вы принимаете и повышаете, вы даете им бонусную репутацию, которая намного полезнее, чем одно редактирование слова. – Nzall