Resumo : neste tutorial, você aprenderá a usar a password_verify()
função PHP para verificar se uma senha corresponde a uma senha com hash.
Introdução à função PHP password_verify()
Ao lidar com senhas, você nunca deve armazená-las no banco de dados como texto simples. E você deve sempre fazer o hash das senhas usando um algoritmo de hash unidirecional seguro.
O PHP forneceu a função integrada password_hash()
que cria um hash a partir de uma senha em texto simples. Observe que a password_hash()
função é uma função hash unilateral. Isso significa que você não consegue encontrar seu valor original.
Para verificar se uma senha de texto simples corresponde a uma senha com hash, você deve fazer o hash da senha de texto simples e comparar os hashes.
No entanto, você não precisa fazer isso manualmente, pois o PHP fornece uma função integrada password_verify()
que permite comparar uma senha com um hash:
password_verify(string $password, string $hash): bool
Linguagem de código: PHP ( php )
O password_verify()
tem dois parâmetros:
$password
é uma senha de texto simples correspondente.$hash
é um hash criado pelapassword_hash()
função.
A password_verify()
função retorna true
se a senha corresponder ao hash ou false
não.
Exemplo de função PHP password_verify()
O exemplo a seguir usa a password_verify()
função para verificar se a senha Password1 corresponde a um hash:
<?php
$hash = '$2y$10$hnQY9vdyZUcwzg2CO7ykf.a4iI5ij4Pi5ZwySwplFJM7AKUNUVssO';
$valid = password_verify('Password1', $hash);
echo $valid ? 'Valid' : 'Not valid';
Linguagem de código: PHP ( php )
Saída:
Valid
Linguagem de código: PHP ( php )
Na prática, você usará a password_verify()
função a seguir para verificar um login:
- Encontre um usuário no banco de dados por nome de usuário (ou e-mail)
- Use a
password_verify()
função para combinar a senha fornecida pelo usuário com uma senha com hash. - Se a senha corresponder ao hash, você faz login do usuário. Caso contrário, você emitirá uma mensagem de erro.
O código será semelhante ao seguinte:
<?php
// ...
$user = find_user_by_username($username);
if ($user && password_verify($password, $user['password'])) {
// log the user in
session_regenerate_id();
$_SESSION['user_id'] = $user['id'];
} else {
echo 'Invalid username or password';
}
Linguagem de código: PHP ( php )
No tutorial a seguir, você aprenderá a usar a password_verify()
função no formulário de login .
Resumo
- Use a função PHP
password_verify()
para verificar se uma senha corresponde a uma senha com hash criada pelapassword_hash()
função.