Foros del Web » Programando para Internet » PHP »

validar rut...

Estas en el tema de validar rut... en el foro de PHP en Foros del Web. hola amigos del foro....quisiera pedirles un favor...tengo este codigo php q sirve para validar el rut de un nuevo usuario... El problema es que cuando ...
  #1 (permalink)  
Antiguo 28/09/2006, 11:17
Avatar de karemlis  
Fecha de Ingreso: agosto-2006
Mensajes: 153
Antigüedad: 17 años, 8 meses
Puntos: 0
validar rut...

hola amigos del foro....quisiera pedirles un favor...tengo este codigo php q sirve para validar el rut de un nuevo usuario...

El problema es que cuando se ingresa el dato, la funcion lo analiza pero siempre da como resultado un rut erroneo....yo le ingreso asi los datos
ej:45563987-5

nose
talvez este mal ingresado??
o es el codigo el q tiene problemas???
ayudaaaaa!!! y gracias..
karemlis

Cita:
function valida_rut($r)
{
$r=strtoupper(ereg_replace('\.|,|-','',$r));
$sub_rut=substr($r,0,strlen($r)-1);
$sub_dv=substr($r,-1);
$x=2;
$s=0;
for ( $i=strlen($sub_rut)-1;$i>=0;$i-- )
{
if ( $x >7 )
{
$x=2;
}
$s += $sub_rut[$i]*$x;
$x++;
}
$dv=11-($s%11);
if ( $dv==10 )
{
$dv='K';
}
if ( $dv==11 )
{
$dv='0';
}
if ( $dv==$sub_dv )
{
return true;
}
else
{
return false;
}
}//fin funcion valida
  #2 (permalink)  
Antiguo 28/09/2006, 11:35
Avatar de karemlis  
Fecha de Ingreso: agosto-2006
Mensajes: 153
Antigüedad: 17 años, 8 meses
Puntos: 0
aaa leyendo el post decidi enviar la parte dodne se llama a la funcion validadorad el rut..
aki va...

Cita:
if (valida_rut(rut_alum) == true)
{
echo 'el rut es CORRECTO ';
//conecta la base de datos
$host = localhost; $user = root;
echo "<H2>inserta en Tabla alumnos.</H2>";

mysql_connect($host,$user) or die("¡ Conexión imposible con la BD !");
//CREA QUERY
$inser = "INSERT INTO alumnos ";
$inser .= "(cod_alum, nn_alum, ape_alum,rut_alum) ";
$inser .= "VALUES('$cod_alum', '$nn_alum', '$ape_alum', '$rut_alum' ";
$inser .= ")";

mysql_select_db("sistema") or die("¡ Imposible seleccionar la base de datos !");//selecciona tabla
mysql_query($inser) or die("¡ Inserción fallida !");//ejecuta query
}
else
{
echo 'el rut es incorrecto ';
}
  #3 (permalink)  
Antiguo 28/09/2006, 12:14
 
Fecha de Ingreso: septiembre-2006
Mensajes: 196
Antigüedad: 17 años, 6 meses
Puntos: 0
validalo mejor x medio de javascript asi lo hice yo y es super facil
pones esto en tu pagina:
<script type="text/javascript" src="validarut.js"></script> --> un archivo aparte k tines que copiar en tu carpeta de localhost
<script language="JavaScript">
TUS FUNCIONES
</script>

luego reemplaza tu textfield rut por este:
<input type="text" name="rut" size="30" onBlur="javascript:return Rut(document.form1.rut.value)">

y copias este codigo en un archivo aparte y lo guardas como validarut.js:
Cita:
function revisarDigito( dvr )
{
dv = dvr + ""
if ( dv != '0' && dv != '1' && dv != '2' && dv != '3' && dv != '4' && dv != '5' && dv != '6' && dv != '7' && dv != '8' && dv != '9' && dv != 'k' && dv != 'K')
{
alert("Debe ingresar un digito verificador valido");
window.document.form1.rut.focus();
window.document.form1.rut.select();
return false;
}
return true;
}

function revisarDigito2( crut )
{
largo = crut.length;
if ( largo < 2 )
{
alert("Debe ingresar el rut completo")
window.document.form1.rut.focus();
window.document.form1.rut.select();
return false;
}
if ( largo > 2 )
rut = crut.substring(0, largo - 1);
else
rut = crut.charAt(0);
dv = crut.charAt(largo-1);
revisarDigito( dv );

if ( rut == null || dv == null )
return 0

var dvr = '0'
suma = 0
mul = 2

for (i= rut.length -1 ; i >= 0; i--)
{
suma = suma + rut.charAt(i) * mul
if (mul == 7)
mul = 2
else
mul++
}
res = suma % 11
if (res==1)
dvr = 'k'
else if (res==0)
dvr = '0'
else
{
dvi = 11-res
dvr = dvi + ""
}
if ( dvr != dv.toLowerCase() )
{
alert("EL rut es incorrecto")
window.document.form1.rut.focus();
window.document.form1.rut.select();
return false
}

return true
}

function Rut(texto)
{
var tmpstr = "";
for ( i=0; i < texto.length ; i++ )
if ( texto.charAt(i) != ' ' && texto.charAt(i) != '.' && texto.charAt(i) != '-' )
tmpstr = tmpstr + texto.charAt(i);
texto = tmpstr;
largo = texto.length;

if ( largo < 2 )
{
alert("Debe ingresar el rut completo")
window.document.form1.rut.focus();
window.document.form1.rut.select();
return false;
}

for (i=0; i < largo ; i++ )
{
if ( texto.charAt(i) !="0" && texto.charAt(i) != "1" && texto.charAt(i) !="2" && texto.charAt(i) != "3" && texto.charAt(i) != "4" && texto.charAt(i) !="5" && texto.charAt(i) != "6" && texto.charAt(i) != "7" && texto.charAt(i) !="8" && texto.charAt(i) != "9" && texto.charAt(i) !="k" && texto.charAt(i) != "K" )
{
alert("El valor ingresado no corresponde a un R.U.T valido");
window.document.form1.rut.focus();
window.document.form1.rut.select();
return false;
}
}

var invertido = "";
for ( i=(largo-1),j=0; i>=0; i--,j++ )
invertido = invertido + texto.charAt(i);
var dtexto = "";
dtexto = dtexto + invertido.charAt(0);
dtexto = dtexto + '-';
cnt = 0;


for ( i=1,j=2; i<largo; i++,j++ )
{
//alert("i=[" + i + "] j=[" + j +"]" );
if ( cnt == 3 )
{
dtexto = dtexto + '.';
j++;
dtexto = dtexto + invertido.charAt(i);
cnt = 1;
}
else
{
dtexto = dtexto + invertido.charAt(i);
cnt++;
}
}

invertido = "";
for ( i=(dtexto.length-1),j=0; i>=0; i--,j++ )
invertido = invertido + dtexto.charAt(i);

window.document.form1.rut.value = invertido.toUpperCase()

if ( revisarDigito2(texto) )
return true;

return false;
}
Ojala te resulte
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 15:18.