Validar DNI con PHP
A menudo nos encontramos con que necesitamos realizar un formulario en el cual se debe introducir y registrar un DNI de un usuario. Este campo del formulario debe ser comprobado o verificado para que los usuarios no puedan introducir cualquier texto.
Hemos realizado un formulario con un único campo que espera que se rellene con un DNI correcto. Al pulsar en botón de «Validar DNI» se procederá a la validación de los datos introducidos.
Lo primero que se comprueba es la longitud de la cadena y debe ser expresamente de 10 carácteres (8 carácteres para los números, el guión y 1 carácter para la letra).
Si la longitud es correcta, pasamos a comprobar que en la posición 8 de la cadena hay un guión.
Si es correcto, lo que hacemos es partir la cadena por un lado los números y por otro la letra de la siguiente forma:
<?php
$partes = explode('-', $nif);
$numeros = $partes[0];
$letra = strtoupper($partes[1]);
if (substr("TRWAGMYFPDXBNJZSQVHLCKE",$numeros%23,1) == $letra)
echo '<p>El DNI: '.$nif.' es correcto!</p>';
else
echo '<p>La letra introducida no es corrrecta!</p>';
?>
Si el if se cumple, el dni será correcto, en caso contrario, la letra no se correspondería con los números introducidos.
Como se valida un DNI español? en una funcion javascript?
tengo un problema con prestashop 1.7 debo activar la opción b2b y como prestashop es francesa les pide a los cliente el SIRET (CIF frances) mediante esta función:
public static function isSiret($siret)
{
if (Tools::strlen($siret) != 14)
return false;
$sum = 0;
for ($i = 0; $i != 14; $i++)
{
$tmp = ((($i + 1) % 2) + 1) * intval($siret[$i]);
if ($tmp >= 10)
$tmp -= 9;
$sum += $tmp;
}
return ($sum % 10 === 0);
}
como puedo adaptarla para que coja un NIF y un CIF español, con la misma variable siret (despues la traduzco como nif/cif y ya esta)
Gracias y saludos.
Hola,
Yo creo que tan solo sería adaptar la validación DNI que tenemos en este post a la función isSiret() de PrestaShop.
Saludos
Podriais indicar como hacerlo?
Los que nos perdemos un poco con el codigo vendria de lujo vuestra ayuda.
Gracias
Hola
me interesa mucho este tema,pero por mas que intento integrarlo en authcontroller no consigo hacerlo funcionar,mis conocimientos de programacion son muy limitados
tengo instalado PS 1.6
me podrias ayudar Jose
muchas gracias por tu tiempo
un saludo
Hola buenas tardes,
Si, envíanos un email a blog@jose-aguilar.com y revisemos como podemos proceder.
Saludos
Una pregunta. Habría alguna forma para que no valide el DNI?
Es que tengo muchos usuarios que le da DNI no válido, y es correcto, paso con DNI como con NIE y CIF.
Es un problema que me está haciendo perder muchos clientes. ¿Podría inhabilitar su validación? para que guarde el dato que se le introduzca, me da igual si correcto o no.
Saludos.
Hola, entonces tan solo tendrás que quitar ese trozo de código que valida el dni para que acepte cualquier cosa. Saludos
Hola,
Se podrían añadir estas lineas al fichero authcontroller.php de mi tienda prestashop??
Un saludo y gracias por tu trabajo
Si claro, allí donde se validen los datos del formulario puedes añadir este código para el dni.
I wanted to thank you again for this amazing site you have made here. It can be full of ideas for those who are actually interested in this kind of subject, primarily this very post. You’re really all absolutely sweet along with thoughtful of others as well as reading your blog posts is a good delight if you ask me. And what a generous gift! Tom and I will certainly have fun making use of your recommendations in what we must do next week. Our listing is a distance long and tips will be put to excellent use.