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: 19 años, 6 meses
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 == 0 && empty($cif) && $cif != '0')
            return 
4;
    
//comprobación de DNI obligatorio y campo vacío
        
if ($dnivalue == 1 && 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, $i, 1);
    
//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($cif, 0, 8) % 23, 1))
                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((2 * $num[$i]),0,1) + substr((2 * $num[$i]),1,1);
        
$n = 10 - substr($suma, strlen($suma) - 1, 1);
    
//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($n, strlen($n) - 1, 1))
                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), 0, 8) % 23, 1))
                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