Está en la página 1de 4

Funcin para validar una clave con PHP, de un campo password, que comprueba que la contrasea tenga nmeros,

letras maysculas y minsculas y cierta cantidad de caracteres.


Por Miguel Angel Alvarez Vamos a mostrar una funcin PHP que podis utilizar en vuestros formularios para validar campos de clave, que se engloba dentro del Taller de PHP de DesarrolloWeb.com. Realmente en las claves se puede escribir cualquier cosa, pero lo que nos interesa es validar que la contrasea tiene ciertas caractersticas que la hagan suficientemente fuerte, como que tenga al menos 6 caracteres y que combine nmeros y letras, etc. Es una funcin bien sencilla, ya que simplemente tenemos que comprobar paso por paso cada una de las caractersticas que tendra la clave que deseamos aceptar. En nuestro caso vamos a comprobar:

Que la clave tiene al menos 6 caracteres Que el password tiene como mximo 16 caracteres Que tiene al menos 1 letra minscula Que al menos tiene 1 letra mayscula Que tiene al menos un carcter numrico

Para hacer la funcin en realidad necesitaramos recibir solamente la clave a ser validada y se devolvera un boleano para decir si es o no vlida la contrasea. Pero por mejorarlo un poco, hemos decidido recibir dos parmetros, uno con la propia clave y otro con una variable que recibiremos por referencia y que rellenaremos con el error que se haya detectado, si es que no se valid el password.

La funcin para validar contraseas


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 ms de 16 caracteres"; return false; }

if (!preg_match('`[a-z]`',$clave)){ $error_clave = "La clave debe tener al menos una letra minscula"; return false; } if (!preg_match('`[A-Z]`',$clave)){ $error_clave = "La clave debe tener al menos una letra mayscula"; return false; } if (!preg_match('`[0-9]`',$clave)){ $error_clave = "La clave debe tener al menos un caracter numrico"; return false; } $error_clave = ""; return true; }

Como hemos podido ver, es una funcin 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 expresin para ver si tiene minsculas y otra para maysculas) y al menos un nmero. Podramos aadir o quitar de la funcin tantas validaciones como deseemos, para que se ajuste a nuestras necesidades. Por ejemplo, si adems desesemos que la contrasea tuviera slo caracteres alfanumricos (nmeros y letras), podramos haber utilizado tambin la funcin PHP ctype_alnum(), que recibe un string y devuelve TRUE si slo encontr nmeros y letras en esa cadena y FALSE si encontr otro tipo de caracteres. Para probar esta funcin hemos hecho una pgina bien simple, que muestra un formulario con un campo password y recibe ese campo para validarlo, mostrando el resultado de la validacin 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 ms de 16 caracteres"; return false; } if (!preg_match('`[a-z]`',$clave)){ $error_clave = "La clave debe tener al menos una letra minscula"; return false; } if (!preg_match('`[A-Z]`',$clave)){ $error_clave = "La clave debe tener al menos una letra mayscula"; return false; } if (!preg_match('`[0-9]`',$clave)){ $error_clave = "La clave debe tener al menos un caracter numrico"; return false; } $error_clave = ""; return true; }

if ($_POST){ $error_encontrado=""; if (validar_clave($_POST["clave"], $error_encontrado)){ echo "PASSWORD VLIDO"; }else{ echo "PASSWORD NO VLIDO: " . $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>

También podría gustarte