Foros del Web » Programando para Internet » PHP »

Modificar código php, función para verificar DNI

Estas en el tema de Modificar código php, función para verificar DNI en el foro de PHP en Foros del Web. Hola, tengo este código que verifica CIF/DNI española, nesecito que me ayuden a modificar para que el código verifique DNI argentino (numeros solamente) Código PHP: ...
  #1 (permalink)  
Antiguo 26/06/2009, 16:11
 
Fecha de Ingreso: abril-2007
Ubicación: Buenos Aires
Mensajes: 49
Antigüedad: 17 años
Puntos: 0
Modificar código php, función para verificar DNI

Hola, tengo este código que verifica CIF/DNI española, nesecito que me ayuden a modificar para que el código verifique DNI argentino (numeros solamente)
Código PHP:
//FUNCION PARA VALIDAR DNI, CIF y NIE
    
function valida_nif_cif_nie($cif) {
    
//Copyright ©2005-2008 David Vidal Serra. Bajo licencia GNU GPL.
    //Este software viene SIN NINGUN TIPO DE GARANTIA; para saber mas detalles

    //Esto es software libre, y puede ser usado y redistribuirdo de acuerdo
    //con la condicion de que el autor jamas sera responsable de su uso.
    //Valores válidos de return: 1 = NIF ok, 2 = CIF ok, 3 = NIE ok, 4 = campo DNI vacío cuando no es obligatorio
    //Valores no válidos de return: 0 = desconocido, -1 = NIF erróneo, -2 = CIF erróneo, -3 = NIE erróneo, -4 = campo DNI vacío cuando es obligatorio, -5 = DNI repetido
    //Comprobación de DNI no obligatorio y campo vacío
        
$dnivalue Configuration::get('DNI_NEEDED');
        if (
$dnivalue == && empty($cif) && $cif != '0')
            return 
4;
    
//comprobación de DNI obligatorio y campo vacío
        
if ($dnivalue == && empty($cif) && $cif != '0')
            return -
4;
    
//comprobación de DNI ya utilizado
        
$ndni strtoupper($_POST['dni']);
        
$sql 'SELECT *
        FROM `'
._DB_PREFIX_.'customer`
        WHERE `dni` = "'
.$ndni.'"
        AND `id_customer` != "'
.intval($_POST['id']).'"';
        
$result Db::getInstance()->getRow($sql);
        if (!empty (
$result))
            return -
5;
    
//preparación de los datos
        
$cif strtoupper($cif);
        for (
$i 0$i 9$i ++)
            
$num[$i] = substr($cif$i1);
    
//si no tiene un formato valido devuelve error
        
if (!ereg('((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)'$cif))
            return 
0;
    
//comprobacion de NIFs estandar
        
if (ereg('(^[0-9]{8}[A-Z]{1}$)'$cif))
            if (
$num[8] == substr('TRWAGMYFPDXBNJZSQVHLCKE'substr($cif08) % 231))
                return 
1;
            else
                return -
1;
    
//algoritmo para comprobacion de codigos tipo CIF
        
$suma $num[2] + $num[4] + $num[6];
        for (
$i 1$i 8$i += 2)
            
$suma += substr(($num[$i]),0,1) + substr(($num[$i]),1,1);
        
$n 10 substr($sumastrlen($suma) - 11);
    
//comprobacion de NIFs especiales (se calculan como CIFs)
        
if (ereg('^[KLM]{1}'$cif))
            if (
$num[8] == chr(64 $n))
                return 
1;
            else
                 return -
1;
    
//comprobacion de CIFs
        
if (ereg('^[ABCDEFGHJNPQRSUVW]{1}'$cif))
            if (
$num[8] == chr(64 $n) || $num[8] == substr($nstrlen($n) - 11))
                return 
2;
            else
                return -
2;
    
//comprobacion de NIEs
        //T
        
if (ereg('^[T]{1}'$cif))
            if (
$num[8] == ereg('^[T]{1}[A-Z0-9]{8}$'$cif))
                return 
3;
            else
                return -
3;
        
//XYZ
        
if (ereg('^[XYZ]{1}'$cif))
            if (
$num[8] == substr('TRWAGMYFPDXBNJZSQVHLCKE'substr(str_replace(array('X','Y','Z'), array('0','1','2'), $cif), 08) % 231))
                return 
3;
            else
                return -
3;
    
//si todavia no se ha verificado devuelve error
        
return 0;
    }
    
//FIN DE VERIFICACION DNI, CIF, NIE. 
Código PHP:
    $controlDni valida_nif_cif_nie($_POST['dni']);

    
//modificación para validar dni,cif y nie
    
elseif ($controlDni == -5)
        
$errors[] = Tools::displayError('DNI insertado ya está siendo usado, verifique si es correcto.');
    elseif (
$controlDni == -1)
        
$errors[] = Tools::displayError('NIF inserted is not valid.');
    elseif (
$controlDni == -2)
        
$errors[] = Tools::displayError('CIF inserted is not valid.');
    elseif (
$controlDni == -3)
        
$errors[] = Tools::displayError('NIE inserted is not valid.');
    elseif (
$controlDni == -4)
        
$errors[] = Tools::displayError('Tax Identification Number is mandatory');
    elseif (
$controlDni == 0)
        
$errors[] = Tools::displayError('NIF, CIF or NIE inserted is not valid.');
    
//fin de verificación 
  #2 (permalink)  
Antiguo 26/06/2009, 16:32
Avatar de Analton  
Fecha de Ingreso: junio-2009
Mensajes: 8
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Modificar código php, función para verificar DNI

Angelus, creo que tienes que replantear tu pregunta.
No esperes que hagamos el trabajo por vos, busca un poco. Contanos que te parece que habria que recortar. O que parte del código no entendes.

Saludos!
  #3 (permalink)  
Antiguo 27/06/2009, 09:25
 
Fecha de Ingreso: abril-2007
Ubicación: Buenos Aires
Mensajes: 49
Antigüedad: 17 años
Puntos: 0
Respuesta: Modificar código php, función para verificar DNI

No se mucho de php pero según lo que entiendo este código verifica que no se repita en BD
Código PHP:
    //comprobación de DNI ya utilizado
        
$ndni strtoupper($_POST['dni']);
        
$sql 'SELECT *
        FROM `'
._DB_PREFIX_.'customer`
        WHERE `dni` = "'
.$ndni.'"
        AND `id_customer` != "'
.intval($_POST['id']).'"';
        
$result Db::getInstance()->getRow($sql);
        if (!empty (
$result))
            return -
5
A esto le quiero agregar para que verifique que tenga un formato 00-123456789-0 (cuil/cuit) ó 123456789 (dni)

Entonces creo que el código que me sirve es:
Código PHP:
    function valida_dni($cif) {

    
//comprobación de DNI ya utilizado
        
$ndni strtoupper($_POST['dni']);
        
$sql 'SELECT *
        FROM `'
._DB_PREFIX_.'customer`
        WHERE `dni` = "'
.$ndni.'"
        AND `id_customer` != "'
.intval($_POST['id']).'"';
        
$result Db::getInstance()->getRow($sql);
        if (!empty (
$result))
            return -
5;
    
//Ver que no este vacio
falta código
   
//Verificar formato 00-123456789-0 en caso de CUIT o 123456789 en casi de DNI
falta código


    
//si todavia no se ha verificado devuelve error
        
return 0;
    } 
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 12:11.