Antes que todo, es bueno 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 indetificació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.
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, mostraremos la forma más completa, pero sientanse en la libertad de optimizar este codigo ustedes mismos.
– Un editor que soporte PHP (Como Dreamweaver).
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 45875986 como ejemplo:
1.- Se toma el RUT sin el Digito Verificador e invertimos los numeros, el RUT quedaría:
68957854
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í:
6×2 = 12
8×3 = 24
9×4 = 36
5×5 = 25
7×6 = 42
8×7 = 56
5×2 = 10
4×3 = 12
3.- Sumamos todos los resultados:
12 + 24 + 36 + 25 + 42 + 56 + 10 + 12 = 217
4.- El resultado de la suma lo dividimos por 11 y extraemos el resto (lo que sobra de la división):
217 : 11 = 19
8 <—- Este es el resto
5.- Ese resto se lo restamos, valga la redundancia, a 11 y con esto obtenemos nuestro Digito Verificador:
11 – 8 = 3
Siendo el RUT completo:
45875986-3
6.- Lo anterior tiene 2 excepciones, si el resultado de la resta (en este caso 11 – 3) 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 “Valido”;
}else{
echo “No Valido”;
}
/* Por ultimo comprobamos si el resultado que obtuvimos es el mismo que ingreso la persona, de ser así se muestra el mensaje “Valido”, de no ser así se muestra el mensaje “No Valido” */
?>
Y con esto ya tienen listo su validador de RUT.
Cualquier duda, dejen su comentario
Por ahora,
Me despido.
3:07:20 pm
Ohhhhh son muy chinos, la dura, que de todo lo que leí, no entendi nada, pero encontre lo que buscaba… solo la formula para averiguar el digito verificador de un rut… jejejeje
11:30:13 pm
consulta!! como cargo el codigo pra validar el rut en dreamweaver cs3
por ke tengo un cuandro de registro enlasado para cargar los datos a una base mysql tonses no se si tendre problemas con eso.
10:23:54 am
Hola,
Pruebo este codigo en dreamweaver y me da un syntax error
alguien mas con ese problema?
saludos
12:34:14 pm
acabo de probarlo y sirve a medias, prove un rut terminado en 0 y salia que el rut no era valido sin embargo ese rut existe y si es valido
6:27:44 pm
@brian
¿Es posible contar con ese rut para corregir el código?
3:58:00 pm
Gracias!
4:23:20 am
máquina de PVC repuestos. Murat máquinas máquina de pvc, pvc Ozgenc máquina máquina de piezas de repuesto.
Contacto: fibamak.com
5:46:19 pm
Gosh I’m really taken with the Savannah portraits.
best place to buy cheap girls long sleeve soccer goalie jersey http://www.myluckyjersey.net/wholesale-fc-barcelona-201617-away-deep-purple-women-soccer-jersey-really-cheap-p53.html
6:20:36 pm
Horrible…
3:58:12 pm
Perrin, en otros paìses el rut se conoce como DNI, aca en Chilito es RUT, en otros paìses se conoce como Nùmero de Seguro Social, e imagino que deben haber màs definiciones, para algo que es similar, pero no es igual, ademàs las validaciones para cada paìs se utilizan algoritmos distintos.
Dicho sea de paso, una buena explicacion.
Saludos Jorge.