martes, 9 de diciembre de 2014

Validacion de Rut por medio de un input box

Antes que todo, me gustaria aclarar que lo que se realiza a continuación es valido solo para los RUTs Chilenos.

Bueno, como sabemos nuestro RUT, es nuesto numero de identificación, unico e irrepetible, no hay 2 personas en Chile con el mismo RUT (o así debiese ser) y hay una forma de comprobar si un RUT es valido o no. A continuación no solo les enseñaremos esa formula sino que además les enseñaremos como hacerlo en PHP.


Cómo validar un RUT en PHP por medio de 1 inputbox

Nota: Es importa que sepan, que como en la mayoria de los casos de programación, esta no es la única manera de realizar lo requerido, (tambien se puede hacer en jquery, psint, y en muchos lenguajes de programación mas), mostraremos la forma más completa, pero sientanse en la libertad de optimizar este codigo ustedes mismos.

¿Que necesitamos?
- Un editor que soporte PHP (Ejemplo Sublime Text).

¿Como Lo Hago?
Lo primero que necesitamos saber antes de programar esto en PHP, es saber como se hace "esto":

<?php

function valida_rut($rut)
{
if(strlen($rut) > 10)
{
return false;
}

if(strstr($rut, '-') == false)
{
return false;
}

$array_rut_sin_guion = explode('-',$rut); // separamos el la cadena del digito verificador.
$rut_sin_guion = $array_rut_sin_guion[0]; // la primera cadena
$digito_verificador = $array_rut_sin_guion[1];// el digito despues del guion.


if(is_numeric($rut_sin_guion)== false)
{
return false;
}
if ($digito_verificador != 'k' and $digito_verificador != 'K')
{
    if(is_numeric($digito_verificador)== false)
      {
      return false;
      }
}
$cantidad = strlen($rut_sin_guion); //8 o 7 elementos
for ( $i = 0; $i < $cantidad; $i++)//pasamos el rut sin guion a un vector
    {
    $rut_array[$i] = $rut_sin_guion{$i};
    }  


$i = ($cantidad-1);
$x=$i;
for ($ib = 0; $ib < $cantidad; $ib++)// ingresamos los elementos del ventor rut_array en otro vector pero al reves.
    {
    $rut_reverse[$ib]= $rut_array[$i];
   
     $rut_reverse[$ib];
    $i=$i-1;
    }
   
$i=2;
$ib=0;
$acum=0;
   do
    {
    if( $i > 7 )
      {
      $i=2;
      }
      $acum = $acum + ($rut_reverse[$ib]*$i);
     $i++;
     $ib++;
   }while ( $ib <= $x);

$resto = $acum%11;
$resultado = 11-$resto;
if ($resultado == 11) { $resultado=0; }
if ($resultado == 10) { $resultado='k'; }
if ($digito_verificador == 'k' or $digito_verificador =='K') { $digito_verificador='k';}

if ($resultado == $digito_verificador)
    {
    return true;
    }
    else
    {
    return false;
    }
}
?>


Ya sabiendo como se realiza el calculo del Digito Verificador, pasamos a crear el formulario.

1.- Creamos un formulario donde se pida ingresar el rut, el codigo el siguiente:
<form method="post" action="">
<label for="rut">Ingresa tu RUT para validar</label>
<input name="rut" value="" type="text" /> /* un inputbox */
<input type="submit" value="probar" />
</form>
<div>
<?php 
require("funciones.php"); 
          if (valida_rut($rut)== false) 
             { 
             echo 'el rut no es correcto'; 
             exit; 
             } 
         else{
             echo 'el rut es correcto';
              
?>
</div>

Diagrama de Flujo del proceso de validacion de rut:





El ejemplo funcionando lo pueden descargar de aca:

[Descarga]



No hay comentarios:

Publicar un comentario