domingo, 2 de junio de 2019

Letra del DNI en PHP

En España el DNI (Documento Nacional de Identidad) lleva un número y una letra de control asociada. Vamos a ver un código en PHP que calcular la letra del DNI.

Disponemos de dos archivos.

  • dni.html   ← link para probarlo
  • dni.php

dni.html

Creamos un formulario en HTML para recoger el número del DNI y se envía al archivo dni.php con el método POST. Ambos archivos deben estar en el mismo directorio dentro del servidor.

En número del DNI se define dentro del input como de tipo number y no de tipo text para conseguir que el usuario introduzca únicamente valores numéricos, evitando así que se introduzcan espacios, puntos u otros caracteres. Además hacemos que el número mínimo sea 1 y el máximo sea 99.999.999.




 <!DOCTYPE html> <html lang="es">  
 <head>  
  <meta charset="utf-8">  
  <title>Calcular al letra del NIF o DNI</title>  
 </head>  
 <body>  
  <h1>Calculo de la letra del DNI</h1>  
  <form action="dni.php" method="post">  
   <p>  
    Introduzca el número del DNI (sin espacios ni puntos)  
   </p>  
   <p>  
    <label for="ndni">Número: </label>  
    <input type="number" name="ndni" min="1" max="99999999">  
   </p>  
   <p>  
    <input type="submit" value="Enviar datos" name="enviar">  
   </p>  
   <p>  
    <input type="reset" value="Restablecer" name="B2">  
   </p>  
  </form>  
 </body>  
 </html>  


dni.php

Este es otro fichero HTML que tiene incluido en el body un script PHP que calcula la letra del DNI. El script de PHP recibe el número del DNI utilizando el método POST y lo mete dentro de la variable $n.

Se calcula el resto de dividir $n entre 23 y se va a una lista de letras para ver que letra le corresponde al DNI analizado. La letra que le correponde es el resto anteriormente calculado, comenzando a contar la primera letra (T) en la posición 0, y la última letra (E) en la posición 22.



 <!DOCTYPE html>  
 <html lang="es">  
 <head>  
  <meta charset="utf-8">  
  <title>formularioPHP</title>  
 </head>  
 <body>  
  <h1>Calculo de la letra del DNI</h1>  
  <p>En España el DNI (Documento Nacional de Identidad) se acompaña de una letra.</p>  
  <p>Este es el resultado del cálculo realizado.</p>  
  <?php  
  $n = $_POST['ndni'];  
  $resto = $n%23;  
  $palabro = 'TRWAGMYFPDXBNJZSQVHLCKE';  
  echo $n."<b>".$palabro{$resto}."</b>";  
  ?>  
  <br><br>  
  <p>  
   <a href="dni.html">Volver a dni.html</a>  
  </p>  
 </body>  
 </html>  

1 comentario:

  1. Para las futuras personas que vengan a este blog, a partir de php 8 debe accederse a la parte de un string con las llaves de array echo $n."".$palabro[$resto].""; Muchas gracias por el código tan sencillo y entendible :)

    ResponderEliminar