PHP | FUNCTIONS - verificarSenha($senha)

A função verificarSenha é uma função em PHP que valida se uma string fornecida ($senha) atende a critérios comuns de complexidade para senhas. Se a senha for considerada forte de acordo com esses critérios, a função retorna true; caso contrário, retorna false.

Aqui está o detalhamento de cada parte da função:

1. Recebe o parâmetro $senha:

A função recebe um argumento $senha, que deve ser uma string representando a senha a ser validada.

2. Verifica se a senha tem pelo menos 8 caracteres:

A função utiliza strlen($senha) para obter o comprimento da string e verifica se ele é menor que 8.
Se a senha tiver menos de 8 caracteres, a função retorna false, indicando que a senha é fraca.
if(strlen($senha) < 8){
return false;
}

3. Verifica se a senha contém pelo menos uma letra minúscula:

A função utiliza preg_match('/[a-z]/', $senha) para verificar se a senha contém pelo menos uma letra minúscula (de a a z).
Se a senha não contiver nenhuma letra minúscula, a função retorna false.
if(!preg_match('/[a-z]/', $senha)){
return false;
}

4. Verifica se a senha contém pelo menos uma letra maiúscula:

A função utiliza preg_match('/[A-Z]/', $senha) para verificar se a senha contém pelo menos uma letra maiúscula (de A a Z).
Se a senha não contiver nenhuma letra maiúscula, a função retorna false.
if(!preg_match('/[A-Z]/', $senha)){
return false;
}

5. Verifica se a senha contém pelo menos um dígito numérico:

A função utiliza preg_match('/[0-9]/', $senha) para verificar se a senha contém pelo menos um número (de 0 a 9).
Se a senha não contiver nenhum número, a função retorna false.

6. Verifica se a senha contém pelo menos um caractere especial:

A função utiliza preg_match('/[\W_]/', $senha) para verificar se a senha contém pelo menos um caractere especial.
\W corresponde a qualquer caractere que não seja uma letra ou um número, e _ é incluído para garantir que o sublinhado (_) também seja considerado um caractere especial.
Se a senha não contiver nenhum caractere especial, a função retorna false.
if(!preg_match('/[\W_]/', $senha)){
return false;
}

7. Retorna true se todas as verificações passarem:

Se a senha passou por todas as verificações acima, a função retorna true, indicando que a senha é considerada forte.
return true;

Código completo da função:

function verificarSenha($senha){
if(strlen($senha) < 8){
return false;
}

if(!preg_match('/[a-z]/', $senha)){
return false;
}

if(!preg_match('/[A-Z]/', $senha)){
return false;
}

if(!preg_match('/[0-9]/', $senha)){
return false;
}

if(!preg_match('/[\W_]/', $senha)){
return false;
}

return true;
}

Resumo:

Entrada: Uma string $senha.
Saída: true se a senha atende a todos os critérios de segurança, false caso contrário.
Critérios de validação:
A senha deve ter pelo menos 8 caracteres.
A senha deve conter pelo menos uma letra minúscula.
A senha deve conter pelo menos uma letra maiúscula.
A senha deve conter pelo menos um número.
A senha deve conter pelo menos um caractere especial (qualquer caractere que não seja uma letra ou um número, incluindo sublinhado _).

Exemplo de uso:

$senhaForte = "SenhaForte123!";
$senhaFraca = "senha";

var_dump(verificarSenha($senhaForte)); // true
var_dump(verificarSenha($senhaFraca)); // false
Neste exemplo, "SenhaForte123!" é uma senha forte, enquanto "senha" é fraca porque não atende aos critérios necessários (não tem 8 caracteres, nem maiúscula, nem números, nem caracteres especiais).