Foros del Web » Programando para Internet » PHP »

Como validar en php datos

Estas en el tema de Como validar en php datos en el foro de PHP en Foros del Web. Hola necesito la cooperación de alguno de ustedes a ver si me pueden ayudar a realizar una validación en php de un número de carnet ...
  #1 (permalink)  
Antiguo 04/07/2006, 09:04
 
Fecha de Ingreso: junio-2006
Ubicación: En Cuba
Mensajes: 2
Antigüedad: 17 años, 10 meses
Puntos: 0
Como validar en php datos

Hola necesito la cooperación de alguno de ustedes a ver si me pueden ayudar a realizar una validación en php de un número de carnet de identidad, espero me puedan ayudar en el tema espero respuesta
  #2 (permalink)  
Antiguo 04/07/2006, 09:18
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
Código PHP:
//
// Verifica que el NIF o CIF entregado es válido
//    (C)2004 Juan Prada www.silueth.com
//
//    string    $as_dato        NIF o CIF a verificar
//
//    Retorno    1    Era un NIF, y es correcto
//                2    Era un CIF, y es correcto
//                -1    Era un NIF, y es incorrecto
//                -2 Era un CIF, y es incorrecto
//                0    No se puede determinar si es NIF o CIF, y es incorrecto

function f_nifcif_verifica($as_dato) {
    
$li_ret 0;

    
// Elimina caracteres no válidos
    
$as_dato ereg_replace("[^[:alnum:]]\", \"\", $as_dato);

    // Averigua si es NIF o CIF (Si lleva la letra al principio, es CIF)
    $lb_esCIF=(!is_numeric(substr($as_dato, 0, 1)));
    $lb_esNIF=(!is_numeric(substr($as_dato, strlen($as_dato)-1, 1)));

    if ($lb_esCIF || $lb_esNIF) {
        // Separa los números y las letras
        $ls_numero = ereg_replace(\"[[:alpha:]]\", \"\", $as_dato);
        $ls_letra = ereg_replace(\"[^[:alpha:]]\", \"\", $as_dato);

        //echo \"as_dato=$as_dato; ls_numero=$ls_numero; ls_letra=$ls_letra; lb_esNIF=\".f_bool($lb_esNIF).\"; lb_esCIF=\".f_bool($lb_esCIF).\'<br>\';

        if ($lb_esNIF) {
            // Verifica que sea NIF
            (f_LetraNIF($ls_numero) == $ls_letra)?$li_ret=1:$li_ret=-1;
        };

        if ($lb_esCIF) {
            // Verifica que sea CIF
            f_ValidarCIF($ls_numero)?$li_ret=2:$li_ret=-2;
        };
    }

    return $li_ret;
}



//
//    Calcula la letra de un NIF
//    (C)2004 Juan Prada www.silueth.com
//
//    string    $dni        Números que conforman el DNI o CIF (SIN LETRA)
//
//    Retorno    string    La letra correspondiente
//
function f_LetraNIF ($dni) {
    $valor= (int) ($dni / 23);
    $valor *= 23;
    $valor= $dni - $valor;
    $letras= \"TRWAGMYFPDXBNJZSQVHLCKEO\";
    $letraNif= substr ($letras, $valor, 1);
    return $letraNif;
}



//
//    Valida el número CIF
//    (C)2004 Juan Prada www.silueth.com
//
//    string    $ccNumber (El CIF (Sin letra) a verificar)
//
//    Retorno    boolean    true    Es correcto
//                            false    No vale
//
function f_ValidarCIF($ccNumber) {
    $lb_ret=false;
    if (strlen($ccNumber) == 8) {
        $lb_ret=true;

        $numOfDigits = 0 - strlen($ccNumber);

        $i = -1;
        while ($i>=$numOfDigits){
          if (($i % 2) == 0){
           $double = 2*(substr($ccNumber, $i, 1));
           $total += substr($double,0,1);
           if (strlen($double > 1)){
             $total += substr($double,1,1);
           }
          } else {
           $total += substr($ccNumber, $i, 1);
          }
          $i--;
        }

        if (($total % 10) != 0){
          $lb_ret=false;
        }
    }
    return $lb_ret;

todo eso buscando en el google "validar dni php" y entrando en la primera pagina que me sale
http://www.programacion.com/php/codigo/106/
__________________
ALOZORRO v5.0 (ahora en .es)
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 09:54.