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;
}
}
?>
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> <?phprequire("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