PHP

Ξ 20 comentarios

Cómo validar un RUT en PHP

por Vertig0
Cómo validar un RUT en PHP

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.

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, mostraremos la forma más completa, pero sientanse en la libertad de optimizar este codigo ustedes mismos.

¿Que necesitamos?

– Un editor que soporte PHP (Como Dreamweaver).

¿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 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.

Comparte este tutorial

El culpable de todo esto

Responsable de transformar miles de k310 en w200, y sobrevivir para contarlo, Jorge Nitales tuvo sus inicios en los barrios bajos de Papúa y Nueva Guinea, en una exitosa empresa productora de Paraguas de Bambú. Luego de alcanzar fama y fortuna, lo dejó todo para jubilar a la edad de 16 años y dedicarse a la cosecha de tomates hidropónicos en la zona de Pemuco. Es ahí donde fue reclutado para CLH por Dexter, un asiduo comprador de la hortaliza. A la fecha se le adjudica el haber enseñado a miles de personas en cientos de países como teletransportarse y hacer el famoso Kamehamehá, rumoreándose fuertemente una Genkidama en el futuro próximo. Las baterías vienen por separado.

En los barrios marginales se le conoce como: Vertig0

Comentarios en Facebook

20 Comentarios

  • 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

  • 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.

  • Hola,

    Pruebo este codigo en dreamweaver y me da un syntax error

    alguien mas con ese problema?

    saludos

  • 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

    • @brian

      ¿Es posible contar con ese rut para corregir el código?

  • Gracias!

  • 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

  • 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

  • Horrible…

  • 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.

1 2

Responder a Xabadu Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Gente linda que nos quiere

Donde mas estamos