Comunidad de diseño web y desarrollo en internet online

Jquery. Validate deja de funcionar al usar md5

Citar            
MensajeEscrito el 30 Nov 2011 05:54 am
Saludos a todos. El asunto es el siguiente:

Tengo un login en el que realizo la encriptación de la contraseña. En el servidor, php detecta si viene encriptada o no y opera en concordancia. En el cliente, lo hago con js usando el md5.js de pajhome.org.uk, versión 2.1 (que a todo esto hay como 3 versiones distintas, al menos yo encontré "jquery.crypt.js", "jquery.md5.js" y "md5.js", todas basadas en el mismo archivo según los comentarios en los mismos. Yo estoy usando el último):

Código HTML :

function MD5(){
   var clave=document.forms["login"].elements["password"].value;
   var encriptada = hex_md5(clave);
      document.forms["login"].elements["password"].value = encriptada;
      document.forms["login"].submit();
}
La función la llamo con el evento " onsubmit="javascript:MD5() ".

El problema surgió cuando quise implementar lo anterior en la página de verdad en la que valido los campos con jquery.validate. ¿El resultado? Pues que la encriptación funciona pero la validación no. La validación es como sigue:

Código HTML :

$(document).ready(function(){
$("#login").validate({
rules: {
password: {
required: true,
minlength: 6,
maxlength: 20
},
},
});
});
El fenómeno exacto es el siguiente: Cuando pulso el botón "enviar" veo como los input cambian de color (lo tengo hecho para que el borde y el fondo cambien de color en caso de error) pero a pesar de "detectar que hay error" el formulario se envía igual. También al tiempo que cambia de color, el input de contraseña se "llena aún cuando no haya escrito nada en él".

Bueno, esa es la situación. Por hoy ya lo dejaré porque el dolor de cráneo no lo soporto. De antemano se agradecen los comentarios y la buena voluntad.

Buena Caza y Largas Lunas.

Por eareddhel

83 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 30 Nov 2011 12:25 pm
Sin ver la página en cuestión puedo señalar que el envio del formulario se hará si la función que asignaste al evento onSubmit del formulario devuelve un valor distinto de false. Como esa función es la que cifra en md5 y esta retorna nulo, el formulario se enviará independientemente de lo que diga validate de JQuery.

Tendrías que cambiar la lógica del formulario para que solo y únicamente cifre en md5 la contraseña cuando el formulario pase la validación de validate.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 30 Nov 2011 08:02 pm
Se me ocurre hacer algo como esto:

Código HTML :

function MD5( login ) {
   if (validate["login"] == false) {
     return false
   } else {
var clave=document.forms["login"].elements["password"].value;
   var encriptada = hex_md5(clave);
      document.forms["login"].elements["password"].value = encriptada;
      document.forms["login"].submit();    
   }
}
Pero con eso consigo que el validate vuelva a hacer lo suyo pero la contraseña ahora no se encripta.

:roll:

De todas formas, después de pasar días y dúas leyendo estoy por convencerme de que pierdo el tiempo y que es mejor hacerme de un SSL porque todos concuerdan en que la encriptación en el cliente no es recomendable ni segura.

¿Qué dicen?

Por eareddhel

83 de clabLevel



Genero:Masculino  

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.