Foros del Web » Programando para Internet » PHP »

Calcular letra de DNI

Estas en el tema de Calcular letra de DNI en el foro de PHP en Foros del Web. ¿Como podria calcular la letra del DNI para saber si el usuario ha puesto su DNI más fiable?...
  #1 (permalink)  
Antiguo 12/03/2003, 09:07
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 15 años, 1 mes
Puntos: 4
Calcular letra de DNI

¿Como podria calcular la letra del DNI para saber si el usuario ha puesto su DNI más fiable?
  #2 (permalink)  
Antiguo 12/03/2003, 09:18
 
Fecha de Ingreso: febrero-2002
Ubicación: ¿donde vivo? pues en mi casa, ¿donde voy a vivir?...
Mensajes: 214
Antigüedad: 15 años, 9 meses
Puntos: 0
Pues, exactamente no recuerdo, si no te han contestado despues, lo busco en casa y te lo digo, q tengo el "algoritmo" (no es mas q una tabla con las letras en un determinado orden, y hacer unas operaciones simples con el numero del dni, dividir enree 23, si mal no recuerdo y aplicar el resultao a esa tabla), esto era la "practica" de moda en programacion hace unos años "calcular el nif" xD, seguramente hasta aparezca en google, vi a mirar, ahora te cuento
__________________
Linux, es para los que odian Microsoft/Windows, BSD, es para los que amamos *IX.

Última edición por NeBeRuS; 12/03/2003 a las 09:21
  #3 (permalink)  
Antiguo 12/03/2003, 09:19
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 15 años, 1 mes
Puntos: 4
Gracias NeBeRuS
  #4 (permalink)  
Antiguo 12/03/2003, 09:27
 
Fecha de Ingreso: febrero-2002
Ubicación: ¿donde vivo? pues en mi casa, ¿donde voy a vivir?...
Mensajes: 214
Antigüedad: 15 años, 9 meses
Puntos: 0
Vale, ya está, aki tienes los 3 pasos.

1.- Dividir por 23 el DNI y prescindir de los decimales.
2.- Multiplica ese numero por 23 y restarlo del DNI.
3.- Te saldrá un número del 0 al 23, entonces solo tienes que aplicar la siguiente tabla:
0T 1R 2W 3A 4G 5M 6Y 7F 8P 9D 10X 11B 12N 13J 14Z 15S 16Q 17V 18H 19L 20C 21K 22E 23T
__________________
Linux, es para los que odian Microsoft/Windows, BSD, es para los que amamos *IX.
  #5 (permalink)  
Antiguo 12/03/2003, 09:34
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 15 años, 1 mes
Puntos: 4
Mira si mi dni fuera 39111111 y lo divido todo 23 y lo multiplico todo por 23 el resultado es el mismo y si resto por mi dni es igual a 0.

Te lo expongo porque no e entendi muy bien.

Saludos
  #6 (permalink)  
Antiguo 12/03/2003, 09:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Lo principal sería saber el algoritmo q se usa . y luego implementarlo en PHP ..

De un ejemplo javascript q encontré hice la versión en PHP:

Código PHP:
<?php
function validar_dni($dni,$letra){
 
$cadena 'TRWAGMYFPDXBNJZSQVHLCKET';
 
$posicion $dni 23;
 
$letra_ok=substr($cadena,$posicion,1);

 if (
$letra_ok == strtoupper($letra)){
     return 
true;
 } else {
     return 
false;
 }
}

if (
validar_dni(35451571,'letra')){
    echo 
"correcto";
} else {
    echo 
"no correcto";
}

?>
Lo probé con un DNI y funcionó xD ... Pruebalo y nos comentas ..
(el DNI del ejemplo no es q usé)

Un saludo,
  #7 (permalink)  
Antiguo 14/03/2003, 09:53
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 15 años, 1 mes
Puntos: 4
No me funciona con mucha fialdad, ya que mi DNI si funcionaba y probando con algunos DNI, algunos me decia que no era correcto.
  #8 (permalink)  
Antiguo 14/03/2003, 10:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues busca el algoritmo oficial del cálculo del DNI o usa google y busca algunos algorimos hechos (en javascript hay muchos) .. si alguno ves q funciona bien .. pasalo a PHP como hice yo con ese ..

Un saludo,
  #9 (permalink)  
Antiguo 14/03/2003, 10:21
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 15 años, 1 mes
Puntos: 4
Así lo haré Cluster.

Saludos
  #10 (permalink)  
Antiguo 15/03/2003, 10:54
 
Fecha de Ingreso: febrero-2003
Mensajes: 12
Antigüedad: 14 años, 9 meses
Puntos: 0
Hola

Si no me equivoco, hablo de memoria, creo que despues de hacer la división entre 23, lo ke se usa es el resto de la división. El resto se busca en la tabla y nos dará la letra. Así es tal como está en el código de Cluster.

Un saludo
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.
Tema Cerrado




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