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.
Para ver todo esto, vamos despues del salto.
Cómo validar un RUT en PHP
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 programacion 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":
Bueno, paso a explicar la formula para conseguir el Digito Verificador de un RUT, usaremos el RUT 16584865 como ejemplo:
1.- Se toma el RUT sin el Digito Verificador e invertimos los numeros, el RUT quedaría:
56848561
2.- Luego de esto multiplicamos la primera cifra por 2, el segundo por 3 y asi sucesivamente, pero cuando llegamos al multiplicador 7, en la proxima cifra se vuelve a 2 y se reinicia, hacemos con todas las cifras del RUT, así:
5×2 = 10
6×3 = 18
8×4 = 32
4×5 = 20
8×6 = 48
5×7 = 35
6×2 = 12
1×3 = 3
3.- Sumamos todos los resultados:
10 + 18 + 32 + 20 + 48 + 35 + 12 + 3 = 151
4.- El resultado de la suma lo dividimos por 11 y extraemos el resto (lo que sobra de la división):
151 : 11 =
14 <—- Este es el resto
5.- Ese resto se lo restamos, valga la redundancia, a 11 y con esto obtenemos nuestro Digito Verificador:
14 – 11 = 3
Siendo el RUT completo:
16584865-3
6.- Lo anterior tiene 2 excepciones, si el resultado de la resta (en este caso 14 – 11) da como resultado "11", entonces el digito verificador es "0" y si el resultado de la resta da "10" entonces el digito verificador es "K".
Ya sabiendo como se realiza el calculo del Digito Verificador, pasemos a PHP.
1.- Creamos un formulario donde se pida ingresar el rut, el codigo el siguiente, pueden encontrar la explicación de este tipo de formularios en nuestro Tutorial: Como hacer un formulario de contacto
<form action="rut.php" method="post">
<table>
<tr>
<td>Ingrese Rut: </td>
<td>
<input type="text" size="8" maxlength="8" name="rut">-
<input type="text" size="1" maxlength="1" name="dv"></td>
</tr>
</table>
<input type="submit" value="Comprobar">
</form>
Y a continuacion el codigo PHP para realizar la formula con las explicaciones de cada paso escritas entre los simbolos /* */:
<?php
/* Iniciamos PHP */
$rut=$_REQUEST["rut"];
$dv=$_REQUEST["dv"];
/* Con las lineas anteriores le asignanos a las variables $rut y $dv, lo ingresado por formulario en la página anterior, solo utilizaremos el rut. El digito verificador, lo usaremos al final*/
$rutin=strrev($rut);
/* Invertimos el rut con la funcion "strrev" */
$cant=strlen($rutin);
/* Contamos la cantidad de numeros que tiene el rut */
$c=0;
/* Creamos un contador con valor inicial cero */
while($c<$cant)
{
$r[$c]=substr($rutin,$c,1);
$c++;
}
/* Hacemos un ciclo en el que se creara un array o arreglo que se llamara $r, en el cual se le asignara a cada valor del array, el valor correspodiente del rut, Por ej: para el rut 12346578, que invertido sería 87654321, el valor de $r[0] es 8, de $r[5] es 3 y asi sucesiva y respectivamente. */
$ca=count($r);
/* Contamos la cantidad de valores que tiene el arreglo con la función “count” */
$m=2;
$c2=0;
$suma=0;
/* En las lineas anteriores creamos 3 cosas, un multiplicador con el nombre $m y que su valor inicial es 2, ya que por formula es el primero que necesitamos, creamos tambien un segundo contador con el nombre $c2 y valor inicial cero y por ultimo creamos un acumulador de nombre $suma en el cual se guardara el total luego de multiplicar y sumar como manda la formula */
while($c2<$ca)
{
$suma=$suma+($r[$c2]*$m);
if($m==7)
{
$m=2;
}else{
$m++;
}
$c2++;
}
/* Hacemos un nuevo ciclo en el cual a $suma se le suma (valga la redundancia) su propio valor (que inicialmente es cero) más el resultado de la multiplicación entre el valor del array correspondiente por el multiplicador correspondiente, basandonos en la formula */
$resto=$suma%11;
/* Calculamos el resto de la división usando el simbolo % */
$digito=11-$resto;
/* Calculamos el digito que corresponde al Rut, restando a 11 el resto obtenido anteriormente */
if($digito==10)
{
$digito=K;
}else{
if($digito==11)
{
$digito="0";
}
}
/* Creamos dos condiciones, la primero dice que si el valor de $digito es 11, lo reemplazamos por un cero (el cero va entre comillas. De no hacerlo así, el programa considerará “nada” como cero, es decir si la persona no ingresa Digito Verificado y este corresponde a un cero, lo tomará como valido, las comillas, al considerarlo texto, evitan eso). El segundo dice que si el valor de $digito es 10, lo reemplazamos por una K, de no cumplirse ninguno de las condiciones, el valor de $digito no cambiará. */
if($dv==$digito)
{
echo "rut no valido";
}else{
echo "rut no valido";
}
/* Por ultimo comprobamos si el resultado que obtuvimos es el mismo que ingreso la persona, de ser así se muestra el mensaje "rut no valido", de no ser así se muestra el mensaje "rut no valido" */
?>
Y con esto ya tienen listo su validador de RUT en PHP.
Diagrama de Flujo del proceso de validacion de rut:
Ejemplo del proceso del proceso de validacion de rut mediante 2 inputs disponible para descarga:
[DESCARGA]

No hay comentarios:
Publicar un comentario