<< Click to Display Table of Contents >> Helpers para password |
![]() ![]() ![]() |
$a = get_senha("abacate"); // transforma em hash para gravar no banco de dados
// esse teste valida a senha (se é hash ou tiver entre 8 e 40 letras returna true)
if (is_senha_ok($a)) {
echo "<p>Senha OK</p>";
} else {
echo "<p>Senha ERRO</p>";
}
// em ambos IF vai ser senhaOK
if (is_senha_ok("abacate123")) {
echo "<p>Senha OK</p>";
} else {
echo "<p>Senha ERRO</p>";
}
// aqui testa quando usuário loga, vamos comparar a senha do banco com a digitada
$senha_na_base_em_hash = (vem do banco)
if (is_senha_valida("123456", $senha_da_base_em_hash)) {
echo "<p>Senha OK</p>";
} else {
echo "<p>Senha ERRO</p>";
}
/**
* Retorna true quando password é valido
* @param string $pass
* @return bool
*/
function is_senha_ok(string $pass): bool {
// se já tá cifrada, ignora validacao
if (password_get_info($pass)['algo']) {
return true;
}
// no minimo 8 letras maximo 30
$tam = mb_strlen($pass);
return ($tam >= 8 && $tam <= 30 ? true : false);
}
/**
* Retorna um password já criptografado (hash)
* @param string $pass
* @return string
*/
function get_senha(string $pass): string {
$opcoes = ['cost' => 10, 'algo' => 1];
return password_hash($pass, PASSWORD_DEFAULT, $opcoes);
}
/**
* Testa se um password bate com uma hash
* @param string $pass
* @param string $hash
* @return bool
*/
function is_senha_valida(string $pass, string $hash): bool {
return password_verify($pass, $hash);
}