Foros del Web » Programando para Internet » Javascript »

[curiosidad] Script que comprueba errores en DNI

Estas en el tema de [curiosidad] Script que comprueba errores en DNI en el foro de Javascript en Foros del Web. Por un tema del trabajo me ha tocado comprobar ciertos DNI que tenía mal puestos. Pensando pensando he llegado a la conclusión de que lo ...
  #1 (permalink)  
Antiguo 13/02/2008, 10:27
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años, 1 mes
Puntos: 61
[curiosidad] Script que comprueba errores en DNI


Por un tema del trabajo me ha tocado comprobar ciertos DNI que tenía mal puestos. Pensando pensando he llegado a la conclusión de que lo que es más probable que esté bien es la letra, por lo que se podría comprobar (sabiendo que la letra se haya aplicando el módulo 23 al número) qué cifra has tecleado mal. En caso de error lo más probable es que se ponga la cifra anterior o la posterior a la auténtica. Así que pensando pensando he llegado a este script que es una versión digamos beta. Y que seguro que entre todos podemos mejorar. Es un script que detecta la cifra que está mal puesta y pone las posibles soluciones según el nivel de precisión que se ponga en su búsqueda (por defecto está puesto en 1 (uno más o uno menos) pero se puede cambiar hasta 5).

A ver que os parece:

Código PHP:
<script>

//Script de KarlanKas

control="TRWAGMYFPDXBNJZSQVHLCKET";
numerro="";

function 
comprobar(numero,letra,precision,seguimiento){
    
document.write(numero+"-"+letra+"-->Original<br />");
    
encontrado=false;
    for(
digitos=0;digitos<numero.length;digitos++){
        for(
variacion=-precision;variacion<=precision;variacion++){
            
numerro="";
            for(
v=0;v<numero.length;v++){
                
variable=parseInt(numero.charAt(v))+variacion;
                if(
variable<0){variable=10-variable;}
                if(
variable>9){variable=variable-10;}
                
numerro+=(digitos==v)?variable:numero.charAt(v);
            }

            if(
control.charAt(parseInt(numerro)%23)==letra){
            
document.write(numerro+"-"+letra+"-->Bueno<br />");
            
encontrado=true}
            else{
                if(
seguimiento){
                    
document.write('<strong style="color:red">'+numerro+'</strong><br>');
                }
            }
        }
    }
    if(!
encontrado){
        
document.write("No se ha encontrado ninguno");
    }
}
//comprobar (número,letra, precisión, hacer_seguimiento)
comprobar("71795207","W",1,false);
</script> 
Sólo detecta en caso de que se haya confundido uno con una sola cifra. Si te confundes con 2 cifras las posibilidades son demasiadas para que resulte útil.

Creo que funciona, pero vete tú a saber...


Un saludo!
[/FONT]
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
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 13:51.