Foros del Web » Programando para Internet » PHP »

cálculo del dígito verificador en php

Estas en el tema de cálculo del dígito verificador en php en el foro de PHP en Foros del Web. Hola, tengo un problema y necesito que me ayuden, necesito hacer un código para verificar el rut (de chile)con el algoritmo del dígito verificador, tiene ...
  #1 (permalink)  
Antiguo 19/05/2003, 15:20
 
Fecha de Ingreso: mayo-2003
Mensajes: 119
Antigüedad: 20 años, 10 meses
Puntos: 0
cálculo del dígito verificador en php

Hola, tengo un problema y necesito que me ayuden, necesito hacer un código para verificar el rut (de chile)con el algoritmo del dígito verificador, tiene alguien un script en php para el dígito verificador?. estoy contra el tiempo en esta peguita. de antemano gracias.
Andrea.
__________________
Saludos
  #2 (permalink)  
Antiguo 19/05/2003, 15:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Hace tiempo que publiqué dicho script en PHP para verificar un RUT calculando su dígito verificador según el algoritmo de modulo 11 ... (que es el que usa el RUT de la cédula de indentidad Chilena)

http://www.forosdelweb.com/showthrea...threadid=80823

(usa el código "coloreado" y fijate en los comentarios)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 19/05/2003, 17:19
 
Fecha de Ingreso: mayo-2003
Mensajes: 119
Antigüedad: 20 años, 10 meses
Puntos: 0
gracias cluster
me salvaste.
saludos
Andrea
__________________
Saludos
  #4 (permalink)  
Antiguo 19/05/2003, 22:02
 
Fecha de Ingreso: marzo-2003
Mensajes: 277
Antigüedad: 21 años
Puntos: 0
este lo hice yo jejeje no sabia que ya avias echo uno cluster
primero un formulario donde poner el rut
formulario.htm
Código PHP:
<html>
<
head></head>
<
body>
<
title>validador de rut</title>

<
FORM METHOD=POST action="rut.php">
Rut<br>
<
INPUT TYPE="TEXT" NAME="rut">
<
br>
<
INPUT TYPE=SUBMIT VALUE="ACEPTAR">
<
form>
</
body>
</
html


el archivo rut.php

Código PHP:
<?php
if (is_numeric($rut)){
      
$digitos strlen($rut);
            
// primero separamos los numeros
        
switch ($digitos){
            case 
7:
                  
$num 0;
                
$num1 substr ("$rut"01);
                
$num2 substr ("$rut"11);
                
$num3 substr ("$rut"21);
                
$num4 substr ("$rut"31);
                
$num5 substr ("$rut"41);
                
$num6 substr ("$rut"51);
                
$num7 substr ("$rut"61);
            break;  

            case 
8:
                
$num substr("$rut"01);    
                  
$num1 substr ("$rut"11);
                 
$num2 substr ("$rut"21);
                  
$num3 substr ("$rut"31);
                
$num4 substr ("$rut"41);
                 
$num5 substr ("$rut"51);
                
$num6 substr ("$rut"61);
                
$num7 substr ("$rut"71);
             break;
        }
        if (
$digitos >=9){
            echo 
"El numero que digitaste tiene $digitos numeros, y como maximo el rut tiene 8";
        }
        else {
                if (
$digitos <=6){
                    echo 
"El numero que digitaste tiene $digitos numeros, y como minimo el rut tiene 7";                }
                else{

                     
//ahora empieza la multiplicacion
                      
$nu $num*3;
                      
$nu1 $num1*2;
                      
$nu2 $num2*7;
                      
$nu3 $num3*6;
                      
$nu4 $num4*5;
                      
$nu5 $num5*4;
                      
$nu6 $num6*3;
                      
$nu7 $num7*2;
  
                        
//ahora empieza la suma
                      
$totalsum $nu $nu1 $nu2 $nu3 $nu4 $nu5 $nu6 $nu7;
  
                            
//ahora la divicion
                      
$totaldiv $totalsum 11;

                        
//ahora sacamos el sobrante de la divicion
                      
$totalresu $totalsum 11;

                        
//ahora empieza la resta
                      
$totalres 11 $totalresu;

                      
                      
                      
//ahora mostramos el digito
                      
                      
switch ($totalres){
                              case 
10:
                              
$digito "K";
                              break;
            
                              case 
11:
                              
$digito "0";
                              break;
    
                              default:   
                              
$digito $totalres;
                              break;
                       }
 
                        echo 
"el digito que quieres es <b>\"$digito\"</b><br>";
                    }
            }
      
}
else {

    echo 
"Pusiste letras";
}
?>

es un poco mas grande del que pones cluster pero es mas facil de entender para los que no saben mucho de php como yo jejeje

este codigo toma como referencia que el usuario ingresa solo numeros sin puntos


salu2

Última edición por kech; 19/05/2003 a las 22:05
  #5 (permalink)  
Antiguo 19/05/2003, 22:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
kech .. Independiente de la implementación del algoritmo (modulo 11 .. el cual lo haces "calcado" a la teoría jeje .. me refiero sin usar bucles ...) te recomiendo que de ese código tuyo te hagas una función .. y que esa función devuelva un "TRUE o FALSE" .. veras que lo haces más versatil ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 04/09/2021, 23:23
 
Fecha de Ingreso: julio-2015
Mensajes: 11
Antigüedad: 8 años, 8 meses
Puntos: 1
Respuesta: cálculo del dígito verificador en php

Les dejo una [URL="https://deprogramador.com/2021/09/03/modulo-11-funcion-en-php/"]función en php para el cálculo del módulo 11[/URL], para números de cualquier cantidad de cifras, adaptada a Chile que usa la K como digito pero puede funcionar con cualquier otro reemplazo del 10
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:18.