Función para validar una clave con PHP, de un campo password, que comprueba que la contraseña tenga números, letras mayúsculas y minúsculas y cierta cantidad de caracteres.
Es una función bien sencilla, ya que simplemente tenemos que comprobar paso por paso cada una de las características que tendría la clave que deseamos aceptar. En nuestro caso vamos a comprobar:
- Que la clave tiene al menos 6 caracteres
- Que el password tiene como máximo 16 caracteres
- Que tiene al menos 1 letra minúscula
- Que al menos tiene 1 letra mayúscula
- Que tiene al menos un carácter numérico
La función para validar contraseñas
function validar_clave($clave,&$error_clave){if(strlen($clave) < 6){
$error_clave = "La clave debe tener al menos 6 caracteres";
return false;
}
if(strlen($clave) > 16){
$error_clave = "La clave no puede tener más de 16 caracteres";
return false;
}
if (!preg_match('`[a-z]`',$clave)){
$error_clave = "La clave debe tener al menos una letra minúscula";
return false;
}
if (!preg_match('`[A-Z]`',$clave)){
$error_clave = "La clave debe tener al menos una letra mayúscula";
return false;
}
if (!preg_match('`[0-9]`',$clave)){
$error_clave = "La clave debe tener al menos un caracter numérico";
return false;
}
$error_clave = "";
return true;
}
Como hemos podido ver, es una función bien simple. Va revisando punto por punto todas las cosas que queremos comprobar en la clave. Usa expresiones regulares bien sencillas para saber si tiene al menos una letra (una expresión para ver si tiene minúsculas y otra para mayúsculas) y al menos un número.
Podríamos añadir o quitar de la función tantas validaciones como deseemos, para que se ajuste a nuestras necesidades. Por ejemplo, si además deseásemos que la contraseña tuviera sólo caracteres alfanuméricos (números y letras), podríamos haber utilizado también la función PHP ctype_alnum(), que recibe un string y devuelve TRUE si sólo encontró números y letras en esa cadena y FALSE si encontró otro tipo de caracteres.
Para probar esta función hemos hecho una página bien simple, que muestra un formulario con un campo password y recibe ese campo para validarlo, mostrando el resultado de la validación y el posible error que se haya encontrado.
<html>
<head>
<title>Validar Password</title>
</head>
<body>
<?
function validar_clave($clave,&$error_clave){
if(strlen($clave) < 6){
$error_clave = "La clave debe tener al menos 6 caracteres";
return false;
}
if(strlen($clave) > 16){
$error_clave = "La clave no puede tener más de 16 caracteres";
return false;
}
if (!preg_match('`[a-z]`',$clave)){
$error_clave = "La clave debe tener al menos una letra minúscula";
return false;
}
if (!preg_match('`[A-Z]`',$clave)){
$error_clave = "La clave debe tener al menos una letra mayúscula";
return false;
}
if (!preg_match('`[0-9]`',$clave)){
$error_clave = "La clave debe tener al menos un caracter numérico";
return false;
}
$error_clave = "";
return true;
}
if ($_POST){
$error_encontrado="";
if (validar_clave($_POST["clave"], $error_encontrado)){
echo "PASSWORD VÁLIDO";
}else{
echo "PASSWORD NO VÁLIDO: " . $error_encontrado;
}
}
?>
<P>
<form action="validar-password.php" method="post">
Escribe una clave:
<input type=password name="clave">
<input type="submit" value="Enviar">
</form>
</body>
</html>
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...