Foros del Web » Programando para Internet » PHP »

Validar RUT (Chile)

Estas en el tema de Validar RUT (Chile) en el foro de PHP en Foros del Web. Seguro que mas de uno de Uds. conoce el Algoritmo de validacion de la Cédula de Identidad de Chile: "Cada dígito de la Cédula tiene ...
  #1 (permalink)  
Antiguo 27/05/2002, 23:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Validar RUT (Chile)

Seguro que mas de uno de Uds. conoce el Algoritmo de validacion de la Cédula de Identidad de Chile:

"Cada dígito de la Cédula tiene que ser multiplicado por 2, 3... 7 en forma inversa. Al llegar a 7 se comienza de nuevo con el 2. Se hace un sumatorio de todos estos resultados .. se divide entre 11 .. se obtiene el resto y ese es el Dígito Verificador (si da 1 se emplea "K")".

Pues eso, aqui tienen una funcion q implementa dicho algoritmo de verificacion .. No he podido testearla con rut's que su digito verificador sea 0 pero deberia funcionar.

Código:
 function validar_rut($rut){
 $x=2;
 $sumatorio=0;
  for ($i=strlen($rut)-1;$i>=0;$i--){
     if ($x>7){$x=2;}
      $sumatorio=$sumatorio+($rut[$i]*$x);
      $x++;
  }
  $digito=bcmod($sumatorio,11);
  $digito=11-$digito;
  
   switch ($digito) {
     case 10:
        $digito="K";
       break;
     case 11:
        $digito="0";
       break;
      }

   return $digito;
}
Y su uso:
$digito=validar_rut($rut);

Un saludo,

pd: basado en codigo Delphi de:
http://www.q3.nu/trucomania/ftesp.html
  #2 (permalink)  
Antiguo 28/05/2002, 10:54
 
Fecha de Ingreso: enero-2002
Mensajes: 15
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Validar RUT (Chile)

Disculpa quiero correr tu funcion pero no se los datos que debo introducir para que sean validados.

Si me puedes llevar de la mano te lo agradezco infinitamente.

Gracias

By: Veronica - [email protected]
  #3 (permalink)  
Antiguo 28/05/2002, 17:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Re: Validar RUT (Chile)

La anteriror funcion solo devueve el valor del digito verificador del RUT chileno (C.I.) .. (util para esas paginas en chile que abusan de pedir el rut para una simple consulta de informacion .. ;) )

La funcion de validacion seria:
Código:
 function validar_rut($rut,$digito_v){
 $x=2;
 $sumatorio=0;
  for ($i=strlen($rut)-1;$i>=0;$i--){
     if ($x>7){$x=2;}
      $sumatorio=$sumatorio+($rut[$i]*$x);
      $x++;
  }
  $digito=bcmod($sumatorio,11);
  $digito=11-$digito;
  
   switch ($digito){
     case 10:
        $digito="k";
       break;
     case 11:
        $digito="0";
       break;
   }
   
  if (strtolower($digito_v)==$digito){
   $verificado=true;
   } else {
   $verificado=false;
  }

   return $verificado;
}
$rut="el_rut"; // aqui el RUT
$digito="digito_verificador"; // aqui el digito verificador.

if (validar_rut($rut,$digito)){
echo "RUT correcto";
}else{
echo "RUT no valido";
}
Un saludo, espero q les sirva ..

pd: Verito: en Mexico es igual el sistema de verificacion de la Cédula de Identidad? ..
  #4 (permalink)  
Antiguo 29/05/2002, 08:54
 
Fecha de Ingreso: diciembre-2001
Mensajes: 451
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Validar RUT (Chile)

gran aporte Cluster, ceo que les servira a muchos.
Felicitaciones!
  #5 (permalink)  
Antiguo 29/05/2002, 21:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Re: Validar RUT (Chile)

He notado (por experiencia propia) ... que no todos los servidores soportan la funcion bcmod() (y eso q esta activa desde la version 4.0.0 segun dice el manual ..) ..

Bueno, si les diera problemas con esa funcion sustitullan la linea:

$digito=bcmod($sumatorio,11);
por:
$digito=$sumatorio%11;

Y no tendran problemas.

Un saludo,

pd: jeje como pasa el time() xD .. ahora ya sé q bcmod() para usarlo PHP ha de estar compilado con las librerias bcmath .. cosa q en windows va por defecto .. pero en linux hay q indicarselo "a mano" con un --enable-bcmath .. pero pese q es solo eso (no hace falta nada mas ...) algunos Administradores de sitema se olvidan de hacerlo al instalar PHP .. :( ...)

Última edición por Cluster; 04/02/2003 a las 06:34
  #6 (permalink)  
Antiguo 04/02/2003, 05:56
 
Fecha de Ingreso: febrero-2002
Mensajes: 346
Antigüedad: 22 años, 2 meses
Puntos: 1
De acuerdo

Buen dato cluster...
te agradesco tu ayuda y la de los amigos que te indican por donde irte, sobre todo cuando el tiempo y los jefes te presionan.

Un saludo..

Rides.
  #7 (permalink)  
Antiguo 04/02/2003, 09:33
 
Fecha de Ingreso: febrero-2002
Mensajes: 346
Antigüedad: 22 años, 2 meses
Puntos: 1
Cluster:

Use tu codigo pero me dice:

Parse error: parse error, expecting `')'' in /var/www/html/ap_acceso2.php on line 19

y la line 19 es
for($i=strlen($rut)-1;$i>=0;$i--)

Alguno sabe el porque de ese error, no lo puedo encontrar.

Gracias.

Rides
  #8 (permalink)  
Antiguo 04/02/2003, 10:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Código PHP:
function validar_rut($rut,$digito_v){

 if (
$rut == ""){
    
$verificado=false;
    return 
$verificado;
 }

 
$x=2;
 
$sumatorio=0;
  for (
$i=strlen($rut)-1;$i>=0;$i--){
     if (
$x>7){$x=2;}
      
$sumatorio=$sumatorio+($rut[$i]*$x);
      
$x++;
  }
  
$digito=$sumatorio%11;
  
$digito=11-$digito;

   switch (
$digito){
     case 
10:
        
$digito="k";
       break;
     case 
11:
        
$digito="0";
       break;
   }

  if (
strtolower($digito_v)==$digito){
   
$verificado=true;
   } else {
   
$verificado=false;
  }

   return 
$verificado;
}

$rut="el_rut"// aqui el RUT
$digito="digito_verificador"// aqui el digito verificador.

if (validar_rut($rut,$digito)){
echo 
"RUT correcto";
}else{
echo 
"RUT no valido";


El código anterior fué deformado por la conversión de datos par este foro nuevo vBulletien de los antigüos ..

Un saludo,
  #9 (permalink)  
Antiguo 04/02/2003, 11:09
 
Fecha de Ingreso: febrero-2002
Mensajes: 346
Antigüedad: 22 años, 2 meses
Puntos: 1
Cluster:

Ta gueno, pero con el rut 9965216-0 da error el digito

saludos

Rides.-
  #10 (permalink)  
Antiguo 04/02/2003, 11:18
 
Fecha de Ingreso: febrero-2002
Mensajes: 346
Antigüedad: 22 años, 2 meses
Puntos: 1
Cluster:

Revisando, recorde lo que tu digistes sobre bcmod:
cambie $digito=bcmod($sumatorio,11);
por $digito=$sumatorio%11; y listo,

y eso que tengo php v.4.1.2.

Agradecido nuevamente

Rides

Puse recien una "PD:" .. No es problema de la versión .. sino q tengan tu servidor instaldo las librerias bcmatch para usar esa función ... Por eso.. ante la duda usar % para obtener el resto (módulo de la división)

jajaj .. Ops! .. disculpa q te edité el mensaje tuyo .. queria editar el mio par poner esta nota xD ...

Última edición por Cluster; 04/02/2003 a las 11:23
  #11 (permalink)  
Antiguo 04/02/2003, 11:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Yo el algoritmo lo saqué de:
http://www.q3.nu/trucomania/truco.cgi?480&esp

Con los RUT's que he probado ha funcionado bien .. Ese en concreto no se q sucede ..

Un saludo,

pd: Si tienes información de alguna fuente oficial sobre el algorimo de validación del RUT Chileno .. dilo y vemos q sucede. Pero .. aquí please .. en el foro, no en privado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 07:02.