Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #11  
Antiguo 02-10-2021
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.766
Poder: 8
ermendalenda Va por buen camino
Cita:
Empezado por Sistel Ver Mensaje
Yo, desde hace muchos años, uso las mismas funciones para comprobar si un documento (NIF, NIE o CIF) expedido en España es válido.
En PHP, llamando a la función COMPROBAR_DOCUMENTO($nif) :
Código PHP:
<?php
function COMPROBAR_DOCUMENTO($nif){
    
// Limpia
    
$nif = LIMPIAR_NIF($nif);
    
// Comprueba NIF, CIF o NIE
    
if(stristr("XYZ", $nif[0])) $salida = COMPROBAR_NIE($nif);
    if(
stristr("ABCDEFGHJKLMNPQRSUVW", $nif[0])) $salida = COMPROBAR_CIF($nif);
    if(
stristr("0123456789", $nif[0])) $salida = COMPROBAR_NIF($nif);
    
// Si la comprobación ha dado errónea se devuelve texto
    
if($salida <> '1') return "Error en documento (CIF/NIF/NIE)";
    return 
"";
}
/***************************************************************************************************************/
function COMPROBAR_NIE($nie){
    if(
$nie[0] == "X") $nie = "0".substr($nie, 1);
    if(
$nie[0] == "Y") $nie = "1".substr($nie, 1);
    if(
$nie[0] == "Z") $nie = "2".substr($nie, 1);
    
$dni = substr($nie, 0, -1);
    if(
LETRA_NIF($dni) <> substr($nie, -1, 1)) return "Error: NIE erróneo";
    return 
1;
}
/***********************************************************************************/
function COMPROBAR_NIF($nif){
    
$nif = str_replace(" ", "", $nif);
    
$nif = str_replace(".", "", $nif);
    
$nif = str_replace("-", "", $nif);
    
$nif = str_replace("_", "", $nif);
    
$nif = str_replace(",", "", $nif);
    
$dni = substr($nif, 0, -1);
    if(
LETRA_NIF($dni) <> strtoupper(substr($nif, -1, 1))) return "Error: NIF erróneo";
    return 
1;
}
/***************************************************************************************************************/
function COMPROBAR_CIF($cif){
    
$cif = str_replace(" ", "", $cif);
    
$cif = str_replace(".", "", $cif);
    
$cif = str_replace("-", "", $cif);
    if(
strlen($cif) <> 9) return "Error: Número de caracteres del CIF no es 9";
    
$validos = "ABCDEFGHJKLMNPQRSUVW";
    if(!
strstr($validos, substr($cif, 0, 1))) return "Error: Primera letra del CIF errónea";
    if(!
ctype_digit(substr($cif, 1, 7))) return "Error: Dígitos no numéricos en el CIF";

    
// Cálculo del dígito final
    
$a = $cif[2] + $cif[4] + $cif[6];
    for(
$i=1; $i<=7; $i=$i+2){
        
$x = $cif[$i] * 2;
        
$x = sprintf('%02d', $x);
        
$b += $x[0] + $x[1];
    }
    
$c = $a + $b;
    
$c = sprintf('%02d', $c);
    
$d = 10 - $c[1];
    if(
$d == 10) $d = 0;
    
$letras = array("J","A","B","C","D","E","F","G","H","I");
    if(
$cif[8] <> $d && $cif[8] <> $letras[$d]) return "Error: CIF erróneo";
    return 
1;
}
/***************************************************************************************************************/
function LIMPIAR_NIF($nif){
    
$nif = str_replace(' ', '', $nif);
    
$nif = str_replace('-', '', $nif);
    
$nif = str_replace('/', '', $nif);
    
$nif = str_replace('_', '', $nif);
    
$nif = str_replace('.', '', $nif);
    
$nif = str_replace(',', '', $nif);        
    
$nif = strtoupper($nif);            
    return 
$nif;
}
/***************************************************************************************************************/
function LETRA_NIF($dni){
    
$dni = str_replace(" ", "", $dni);
    
$dni = str_replace(".", "", $dni);
    
$resto = (int) ($dni % 23);
    
$letras = "TRWAGMYFPDXBNJZSQVHLCKE";
    
$letra = substr ($letras, $resto, 1);
    return 
$letra;
}
?>
Saludos
Gracias me faltaba la parte dell algoritmo para comprobar los NIE (Offline), con esto listo.

Una cosa menos.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
SII -Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice newtron Internet 3716 19-01-2026 20:01:34
Como utilizar la ayuda del nuevo Sistema Operativo gluglu Humor 3 24-09-2007 09:39:05
Aplicacion Agencia De Viajes ArdiIIa Varios 9 20-01-2007 16:49:53
El Vasco Aguirre Al González La Taberna 5 26-05-2006 09:22:28
Microsoft ha lanzado su nuevo sistema operativo DarkByte Humor 0 25-01-2004 09:21:14


La franja horaria es GMT +2. Ahora son las 03:02:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi