Foros del Web » Programando para Internet » PHP »

Cómo validar PASAPORTE/DNI en php

Estas en el tema de Cómo validar PASAPORTE/DNI en php en el foro de PHP en Foros del Web. Buenas, Estoy haciendo una validación para saber si han introducido correctamente el DNI o el PASAPORTE La validación del DNI la tengo casi lista, lo ...
  #1 (permalink)  
Antiguo 06/01/2010, 15:48
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Cómo validar PASAPORTE/DNI en php

Buenas,

Estoy haciendo una validación para saber si han introducido correctamente el DNI o el PASAPORTE

La validación del DNI la tengo casi lista, lo único que me falla es cuando introducen mas de una letra.

Alguien sabe como solucionarlo?

Código PHP:
Ver original
  1. function valida_dni($dni) // retorna false(0) si hay errror o el DNI validado y con letra si no hay error
  2. {
  3.    $str = trim($dni);
  4.    $str = str_replace("-","",$str);
  5.    $str = str_ireplace(" ","",$str);
  6.    $n = substr($str,0,strlen($str)-1);
  7.    $n = intval($n);
  8.    if (!is_int($n))
  9.    {
  10.       return 0;
  11.    }
  12.    $l = substr($str,-1);
  13.    if (!is_string($l))
  14.    {
  15.       return 0;
  16.    }
  17.    $letra = substr ("TRWAGMYFPDXBNJZSQVHLCKE", $n%23, 1);
  18.    if ( strtolower($l) == strtolower($letra))
  19.    {
  20.       return $n.$l;
  21.    }
  22.     else
  23.    {
  24.       return 0;
  25.    }
  26. }

En España el número del pasaporte es el mismo que el DNI. Ergo es la
validación del NIF. Pero fuera de España el PASAPORTE puede ser distinto¿? Qué patrón se usa para validar un pasaporte fuera de españa?

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 06/01/2010, 15:52
 
Fecha de Ingreso: enero-2008
Ubicación: /España/Galicia
Mensajes: 928
Antigüedad: 16 años, 3 meses
Puntos: 21
Respuesta: Cómo validar PASAPORTE/DNI en php

pues bueno, siempre tiene el mismo numero de caracteres no?
pues entonces con substr

cojes todo menos la ultimo (ke es la letra)

y con la funcion is_numeric(), mira si son numeros, si lo son, cojes lo ultimo y miras si tb es numero, si no lo es esta bien.
  #3 (permalink)  
Antiguo 06/01/2010, 16:32
 
Fecha de Ingreso: diciembre-2009
Mensajes: 438
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: Cómo validar PASAPORTE/DNI en php

O puedes hacerlo con expresiones regulares:

^\d{8}[A-Z]$

Te dejo algún enlace para que puedas conocer más sobre el tema:
[URL="http://gollum.inforg.uniovi.es/aii/valida_regexp.php"]http://gollum.inforg.uniovi.es/aii/valida_regexp.php[/URL]
[URL="http://techtastico.com/post/8-expresiones-regulares-para-php-muy-utiles/"]http://techtastico.com/post/8-expresiones-regulares-para-php-muy-utiles/[/URL]
  #4 (permalink)  
Antiguo 07/01/2010, 00:52
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Cómo validar PASAPORTE/DNI en php

Cita:
Iniciado por SainT90 Ver Mensaje
pues bueno, siempre tiene el mismo numero de caracteres no?
pues entonces con substr

cojes todo menos la ultimo (ke es la letra)

y con la funcion is_numeric(), mira si son numeros, si lo son, cojes lo ultimo y miras si tb es numero, si no lo es esta bien.
Muchas gracias a los dos, entonces el número de PASAPORTE tiene siempre 8 digitos y una letra? o es diferente al DNI?

Muchas gracias de antemano!
  #5 (permalink)  
Antiguo 07/01/2010, 02:23
 
Fecha de Ingreso: diciembre-2009
Mensajes: 438
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: Cómo validar PASAPORTE/DNI en php

Creo que el número de pasaporte es diferente al DNI pero desconozco cual es exactamente. Por otra parte si quieres puedes "validar" un poco más el DNI. A parte de comprobar si son 8 números y una letra puedes comprobar que la letra se corresponga a estos 8 números, ya que la letra se obtiene con el resto de dividir el número de dni por 23.

Os dejo un enlace donde se explica muy bien:
[URL="http://es.wikibooks.org/wiki/Algoritmo_para_obtener_la_letra_del_NIF"]http://es.wikibooks.org/wiki/Algoritmo_para_obtener_la_letra_del_NIF[/URL]
  #6 (permalink)  
Antiguo 07/01/2010, 12:24
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Cómo validar PASAPORTE/DNI en php

Cita:
Iniciado por Osdiwe Ver Mensaje
Creo que el número de pasaporte es diferente al DNI pero desconozco cual es exactamente. Por otra parte si quieres puedes "validar" un poco más el DNI. A parte de comprobar si son 8 números y una letra puedes comprobar que la letra se corresponga a estos 8 números, ya que la letra se obtiene con el resto de dividir el número de dni por 23.

Os dejo un enlace donde se explica muy bien:
[URL="http://es.wikibooks.org/wiki/Algoritmo_para_obtener_la_letra_del_NIF"]http://es.wikibooks.org/wiki/Algoritmo_para_obtener_la_letra_del_NIF[/URL]
Gracias Osdiwe,

El tema del DNI lo tengo controlado, lo que necesito es saber si para validar el PASAPORTE se hace de la misma forma o siguiendo otro patrón.

Salu2!

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:14.