Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/06/2009, 16:11
Angelus07
 
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