• Tags

  • Archivo

  • Post recientes

  • « | Home | »

    Validación PHP de NIF, CIF y NIE

    By creacciona | May 6, 2009

    Bookmark and Share

    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: , , , , , , , , , , , ,

    Related posts






     

    Topics: Desarrollo web, Internet | 1 Comment »

    One Response to “Validación PHP de NIF, CIF y NIE”

    1. ORIOL Says:
      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;

      ?>

    Comments