« ¿Los mejores sites en Drupal? | Home | Promoción web para pymes, empresas y particulares. »
Validación PHP de NIF, CIF y NIE
By creacciona | May 6, 2009
Este código PHP es perfecto para validar códigos de identificación usados en territorio español. Sirve para NIF ( número de indentificacion fiscal de personas), CIF ( Codigo de identificacion fiscal de empresas) y NIE ( Numeros de identificacion para extranjeros).
Además, está puesta al día, y contempla la nueva letra Y ( y la Z ) que se usa ahora en los NIE actuales.
El código ha sido encontrado en la fuente original http://www.bulma.net/impresion.phtml?nIdNoticia=2248 y merece la pena ser consultado para más detalles.
Según la nota del autor:
*Nota: dado que el algoritmo del dígito de control usado es secreto y jamás ha sido publicado en fuentes oficiales del Estado se ha usado un algoritmo obtenido por ingeniería inversa que ha logrado validar correctamente alrededor de un millón de CIFs, NIFs y NIEs en total. Con lo que, presumiblemente, se puede asumir que concuerda con el algoritmo de validación secreto original.
Tags: algoritmo, CIA, CIF, código, codigo de identificacion fiscal, Códigos, Desarrollo web, Empresas, fuentes, Internet, NIE, NIF, PHPRelated posts
Topics: Desarrollo web, Internet | 1 Comment »







February 18th, 2010 at 6:02 pm
“.$cif;
$cifMayus=strtoupper($cif);
echo ” “.$cifMayus;
$allargada=strlen($cifMayus);
echo ” “.$allargada; // mirem l’allargada del cif
if ($allargada != 9) { // si no te la longitud correcte (9 digits) ya no el comprovem
$correcte= “false”;
echo ” “.$correcte;
}else {
echo ” “.$correcte;
for ($i=0;$i<$allargada;$i++){
$valor=substr($cifMayus,$i,1);
echo " lletra: “.$i.” “.$valor;
}
// sumem els numeros de les posicions parells
for ($i=2;$i<8;$i=$i+2){
$sumaparells += substr($cifMayus,$i,1);
}
echo " Suma Parells “.$sumaparells.”";
for ($i=1;$i=10){
$x= substr($x,0,1)+substr($x,1,1);
//echo ” -> “.$x. ” “;
}
$totalimpars+=$x;
}
echo ” Suma Imparells “.$totalimpars;
$sumatotal=$totalimpars+$sumaparells; // sumem els impars i el parells
echo ” Suma Impars + pars “.$sumatotal;
$unitats=substr($sumatotal,(strlen($sumatotal)-1),1);//extreiem les unitats de la sumatotal
echo ” Unitats “.$unitats;
$digitcontrol=10-$unitats;
echo ” Digit de Control “.$digitcontrol;
switch ($digitcontrol){
case 1:
if (((substr($cifMayus,(strlen($cifMayus)-1),1))==1) || ((substr($cifMayus,(strlen($cifMayus)-1),1))==”A”)){
$correcte=”true”;
}else{ $correcte=”false”;}
break;
case 2:
if (((substr($cifMayus,(strlen($cifMayus)-1),1))==2) || ((substr($cifMayus,(strlen($cifMayus)-1),1))==”B”)){
$correcte=”true”;
}
break;
case 3:
if (((substr($cifMayus,(strlen($cifMayus)-1),1))==3) || ((substr($cifMayus,(strlen($cifMayus)-1),1))==”C”)){
$correcte=”true”;
}else{ $correcte=”false”;}
break;
case 4:
if (((substr($cifMayus,(strlen($cifMayus)-1),1))==4) || ((substr($cifMayus,(strlen($cifMayus)-1),1))==”D”)){
$correcte=”true”;
}else{ $correcte=”false”;}
break;
case 5:
if (((substr($cifMayus,(strlen($cifMayus)-1),1))==5) || ((substr($cifMayus,(strlen($cifMayus)-1),1))==”E”)){
$correcte=”true”;
}else{ $correcte=”false”;}
break;
case 6:
if (((substr($cifMayus,(strlen($cifMayus)-1),1))==6) || ((substr($cifMayus,(strlen($cifMayus)-1),1))==”F”)){
$correcte=”true”;
}else{ $correcte=”false”;}
break;
case 7:
if (((substr($cifMayus,(strlen($cifMayus)-1),1))==7) || ((substr($cifMayus,(strlen($cifMayus)-1),1))==”G”)){
$correcte=”true”;
}else{ $correcte=”false”;}
break;
case 8:
if (((substr($cifMayus,(strlen($cifMayus)-1),1))==8) || ((substr($cifMayus,(strlen($cifMayus)-1),1))==”H”)){
$correcte=”true”;
}else{ $correcte=”false”;}
break;
case 9:
if (((substr($cifMayus,(strlen($cifMayus)-1),1))==9) || ((substr($cifMayus,(strlen($cifMayus)-1),1))==”I”)){
$correcte=”true”;
}else{ $correcte=”false”;}
break;
case 0:
if (((substr($cifMayus,(strlen($cifMayus)-1),1))==0) || ((substr($cifMayus,(strlen($cifMayus)-1),1))==”J”)){
$correcte=”true”;
}else{ $correcte=”false”;}
break;
}
}
echo ” Ultim numero “.substr($cifMayus,(strlen($cifMayus)-1),1);
echo ” Valoracio “.$correcte;
?>