Foros del Web » Programando para Internet » Javascript »

Comparación de contraseñas en JavaScript

Estas en el tema de Comparación de contraseñas en JavaScript en el foro de Javascript en Foros del Web. Tengo un sitio en PHP con MySQL que maneja sesiones y quiero que al momento de registrarse un usuario se comparen los valores de las ...
  #1 (permalink)  
Antiguo 19/03/2005, 09:31
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 19 años, 2 meses
Puntos: 0
Exclamación Comparación de contraseñas en JavaScript

Tengo un sitio en PHP con MySQL que maneja sesiones y quiero que al momento de registrarse un usuario se comparen los valores de las cajas de texto que solicitan la contraseña y la repetición de la contraseña, ¿Cómo puedo hacer que se comparen las cajas de texto de las contraseñas y que si no coinciden me mande un mensaje de error, pero después de mandar el mensaje se conserven los demás datos que introdujo el usuario en las demás cajas de texto?

Adicionalmente tengo una función que me valida el formulario, y he intentado validar los valores de las cajas ahí, pero entonces no funciona la validación del formulario, actualmente para la validación del formulario tengo algo así:

function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args=MM_valida teForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
} if (errors) alert('The following error(s) occurred:\n'+errors+'algo');
document.MM_returnValue = (errors == '');
}


Espero que puedan ayudarme.
  #2 (permalink)  
Antiguo 19/03/2005, 12:01
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Hola, Gabriel
Antes de enviar o validar el formulario, llama a la función que compara las contraseñas:
Código HTML:
<head>
<script language="JavaScript" type="text/JavaScript">
function verif(formu)
{	if (formu.c1.value==formu.c2.value) 
{ alert('las contraseñas coinciden'); return true }
	else 
{ alert('las dos contraseñas no son iguales'); return false }
}
</script>
</head>
<body>
<form>
Contraseña: <input type="password" name="c1">
<br>
Repite contraseña: <input type="password" name="c2">
<input type='button' value='Validar' onclick='return(verif(this.form)); MM_validateForm()'>
</form>
</body> 
__________________
Angel :cool:
  #3 (permalink)  
Antiguo 19/03/2005, 12:19
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 19 años, 2 meses
Puntos: 0
Muchas gracias Angel, ahora de favor me podrías explicar porqué tiene que ser de esa manera, osea, me puedes dar una breve explicación del código, mi principal duda es porqué no lo podía hacer en la función de validación de formulario por ejemplo antes de la instrucción:

if (errors) alert('The following error(s) occurred:\n'+errors+'algo');


yo había puesto algo así:

if (Contra.value!=ContraRep.value)
{
errors+='- Las contraseñas no coinciden\n';
}

y no funcionó, me podrías explicar el porqué, Gracias
  #4 (permalink)  
Antiguo 19/03/2005, 12:32
Avatar de Gabriel0702  
Fecha de Ingreso: febrero-2005
Mensajes: 155
Antigüedad: 19 años, 2 meses
Puntos: 0
Mira Angel, has de cuenta que con tu código ya después no me validaba el formulario, me imagino que era porque dentro de la instrucción que se especifica lo que tiene que hacer el botón:

<input name="Submit" type="submit" onClick="MM_validateForm('ApePatTxt','','R','ApeMa tTxt','','R','UserName','','R','MatriculaTxt','',' R','email','','RisEmail','Contra','','R','ContraRe p','','R');return document.MM_returnValue" value="Registrar">

ya existe una función de return después de que se evalúa el formulario, así que ahora lo que hice es integrar la comparación de las contraseñas dentro del procedimiento de validar formulario y creo que el error que tenía era porque no hacía la referencia completa a las cajas de texto, o sea, yo ponía sólo Contra.value, en vez de FormRegistro.Contra.value, y ahora ya funciona, el código final quedó así:


function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args=MM_valida teForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
}
if (FormRegistro.Contra.value!=FormRegistro.ContraRep .value)
{
errors+= '- Las contraseñas no coinciden\n';
}
if (errors) alert('The following error(s) occurred:\n'+errors);
document.MM_returnValue = (errors == '');
}
  #5 (permalink)  
Antiguo 19/03/2005, 12:34
 
Fecha de Ingreso: octubre-2004
Ubicación: España
Mensajes: 894
Antigüedad: 19 años, 6 meses
Puntos: 3
Pues no lo sé, parece lógico tu intento, pero...
Enredar con estas funciones prefabricadas es delicado.
Supongo que identificaste adecuadamente los controles "Contra" y "ContraRep", indicando a qué formulario pertenecen. ¿Con qué argumentos se llama a la función de validación, pare que sepa cuál es el formulario con el que debe trabajar?
__________________
Angel :cool:
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 03:37.