Ayuda para recupera contraseña

Encontré un código que restringe el acceso solo a usuarios registrado y todo me funciona bien pero el fallo esta en recordar la contraseña al usuario cuando este la olvida lo que debería hacer es generar un nueva contraseña cambiar la que hay en la base de datos mysql y luego devolvérsela al usuario que previamente dio su email o nick y enviársela al correo, hace casi todo genera la nueva contraseña, la envía al correo pero no la cambia en la base de datos . Esta hecho en php te pongo el código que utilizo en la página que recuerda la contraseña y si ves el error dime cual es el error.
Código php.
<?php
include("config.php");
# Recordatorio de contraseña
if($_POST["recordar"]){
$infoquery = mysql_query("SELECT * FROM usuarios WHERE email='$_POST[nick]' or nick='$_POST[nick]'");
$info = mysql_fetch_array($infoquery);
if(mysql_num_rows($infoquery) != 0){
$randpass = rand(000000,999999);
$randpassmd5 = md5($randpass);
mysql_query("UPDATE usuarios SET contrasena=$randpassmd5 WHERE nick='$_POST[nick]'");
$mensaje = _MENSAJE_1_."".$info[nick].""._MENSAJE_2_."".$randpass."
--------------------------------------";
mail($info[email],_CONTRASENA_PERDIDA_ASUNTO,$mensaje);
echo _CONFIRM_EMAIL_;
} else {
error(_NO_EXISTE_USUARIO_,"0");
}
} else {
?><b><?=_TITULO_RECORDAR_CONTRASENA_?></b><br><br><?=_TEXTO_RC_?>
<form action="" method="post" name="form" id="form"><?=_NICK_RC?>
<input name="nick" type="text" id="nick">
<input name="recordar" type="submit" id="recordar" value="Recordar">
</form>
<?
}
?>
Me urge mucho pues estoy creando una web y lo necesito urgentemente.
Gracias por tu tiempo
Respuesta
1
mysql_query("UPDATE usuarios SET contrasena=$randpassmd5 WHERE nick='$_POST[nick]'");
faltan comillas
mysql_query("UPDATE usuarios SET contrasena='$randpassmd5' WHERE nick='$_POST[nick]'");
La frase "si ves el error" me indica que te salio una página sin indicaciones, estos errores deberían quedar registrados en un log, por ejemplo, en mandrake, los errores de script php aparecen en /var/log/messages.log, en trustix aparecen en /var/log/httpd/error.log, fíjate donde se registran en el SO que usas

3 respuestas más de otros expertos

Respuesta
1
Para verlo solo hay que leer el código... La linea que está mal es:
mysql_query("UPDATE usuarios SET contrasena=$randpassmd5 WHERE nick='$_POST[nick]'");
No hay comillas rodeando el dato de contraseña, o sea:
mysql_query("UPDATE usuarios SET contrasena='$randpassmd5' WHERE nick='$_POST[nick]'");
Creo que esto será todo.
Chao.
Respuesta
1
Que pena contigo pero tampoco encuentro el error. Yo también hice un código parecido para lo de la parte de "olvido su contraseña" y no pude utilizarlo porque tuve problemas con el md5 que es para encriptar claves. Te sugiero que busques más acerca del md5 porque me da la impresión que hay es donde tienes el problema más no estoy segura. Creo que el md5 encripta pero no desencripta
Respuesta
1
Un fallo que estoy viendo, es que la contraseña en md5, la pasas como numero en lugar de cadena de caracteres, ponle comilla.
mysql_query("UPDATE usuarios SET contrasena='$randpassmd5' WHERE nick='$_POST[nick]'");
a ver si es eso.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas