> Manuales > Taller de PHP

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.

Vamos a mostrar una función PHP que podéis 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 contraseña tiene ciertas características que la hagan suficientemente fuerte, como que tenga al menos 6 caracteres y que combine números y letras, etc.

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:

Para hacer la función en realidad necesitaríamos recibir solamente la clave a ser validada y se devolvería un boleano para decir si es o no válida la contraseña. Pero por mejorarlo un poco, hemos decidido recibir dos parámetros, 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 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>

Podemos ver este ejemplo en marcha en una página aparte.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual