Daviant Posted September 4, 2014 Share Posted September 4, 2014 (edited) Saludos; Nuevamente solicitando orientación de las personas entendidas en estos temas. Necesito validar el Campo NIF (Rut en Chile) y el script que pongo aqui hace eso muy bien. El problema es que no tengo idea de donde insertar este código y como pasar el valor del NIF como parámetro. Agradecería cualquier ayuda al respecto. Muchas gracias de antemano. <?php function validaRut($rut){ if(strpos($rut,"-")==false){ $RUT[0] = substr($rut, 0, -1); $RUT[1] = substr($rut, -1); }else{ $RUT = explode("-", trim($rut)); } $elRut = str_replace(".", "", trim($RUT[0])); $factor = 2; for($i = strlen($elRut)-1; $i >= 0; $i--): $factor = $factor > 7 ? 2 : $factor; $suma += $elRut{$i}*$factor++; endfor; $resto = $suma % 11; $dv = 11 - $resto; if($dv == 11){ $dv=0; }else if($dv == 10){ $dv="k"; }else{ $dv=$dv; } if($dv == trim(strtolower($RUT[1]))){ return true; }else{ return false; } } ------------------------------------------------------------------------------ ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> </head> <body> <form method="post" action=""> <label for="rut">Ingresa tu RUT para validar</label> <input name="rut" value="" type="text" /> <input type="submit" value="probar" /> </form> <div> ----------------------------------------------------------------------------- <?php if($_POST['rut']){ if(validaRut($_POST['rut'])==true){ echo "El rut ".$_POST['rut']." es válido"; }else{ echo "El rut ".$_POST['rut']." no es incorrecto"; } } ?> </div> <p>El código de esta página es:</p> <pre> <?php echo show_source(__FILE__);?> </pre> </body> </html> Edited September 6, 2014 by Daviant (see edit history) Link to comment Share on other sites More sharing options...
Daviant Posted September 6, 2014 Author Share Posted September 6, 2014 (edited) Saludos; Bueno, ya logré incorporarlo y lo mejor de todo es que funciona. En retribución a toda la ayuda que he recibido de los amigos del foro comparto la solución. Es solo para validar el Rut Chileno (dígito verificador módulo 11). En el archivo: /classes/Validate.php Hay que buscar lo siguiente: public static function isDniLite($dni) { return empty($dni) || (bool)preg_match('/^[0-9A-Za-z-.]{1,16}$/U', $dni); } Y reemplazarlo por el siguiente código modificado citado en el primer post: public static function isDniLite($dni) { if(strpos($dni,"-")==false){ $RUT[0] = substr($dni, 0, -1); $RUT[1] = substr($dni, -1); }else{ $RUT = explode("-", trim($dni)); } $elRut = str_replace(".", "", trim($RUT[0])); $factor = 2; for($i = strlen($elRut)-1; $i >= 0; $i--): $factor = $factor > 7 ? 2 : $factor; $suma += $elRut{$i}*$factor++; endfor; $resto = $suma % 11; $dv = 11 - $resto; if($dv == 11){ $dv=0; }else if($dv == 10){ $dv="k"; }else{ $dv=$dv; } if($dv == trim(strtolower($RUT[1]))){ return true; }else{ return false; } } Notas adicionales: - Tienen que tener activado el DNI para Chile en el módulo de Localización / Países - Para que aparezca en el lugar donde lo necesiten tienen que acomodarlo en el formato de dirección dentro del país correspondiente. - Los mensajes de error hay que traducirlos para adaptarlos al páis (no lo hago aún) Muchas gracias y espero les sirva. Edited September 6, 2014 by Daviant (see edit history) 2 Link to comment Share on other sites More sharing options...
Darkest Posted September 12, 2014 Share Posted September 12, 2014 vi tu función y se ve buena, el tema es que quiero probarla en un login de validación al momento de compra, como llamo la función desde un form? si me pudieses ayudar sería espectacular Link to comment Share on other sites More sharing options...
Daviant Posted September 13, 2014 Author Share Posted September 13, 2014 (edited) vi tu función y se ve buena, el tema es que quiero probarla en un login de validación al momento de compra, como llamo la función desde un form? si me pudieses ayudar sería espectacular Saludos; Aclaro que la función no es mia, está en un sitio a libre disposición y adecuada para que funcione en Prestashop. No he investigado como llamarla desde un Form, pero creo que en algún momento necesitaré esa funcionalidad. En qué tipo de formulario quieres incorporarlo? uno de confección propia, construido en sitio online o software intermediario? Lo otro que puedes hacer es mirar el código de /classes/Validate.php y ver como es llamada la función y tratar de replicarlo adaptanto el código de tu formulario. Edited September 13, 2014 by Daviant (see edit history) 1 Link to comment Share on other sites More sharing options...
Recommended Posts