hola estoy intentando hacer un formulario para que mis usuarios puedan cambiar la contraseña, sobre todo cuando se les ha olvidado y le hemos mandado una nueva al azar.
El problema es el siguiente, la contraseña la tengo encriptada en md5 y he aqui lo que me pasa, tengo el siguiente formulario:
Código HTML:
<form action="cambiar_clave2.php" method="POST">
<table width="100%" cellpadding="0" cellspacing="5">
<tr>
<td width="31%" align="right">Clave actual:</td>
<td width="69%"><input name="pass" type="password" class="file" size="40"></td>
</tr>
<tr>
<td align="right">Nueva clave:</td>
<td><input name="nueva" type="password" class="file" size="40"></td>
</tr>
<tr>
<td align="right">Confirmación de nueva clave:</td>
<td><input name="nueva2" type="password" class="file"></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="5" cellpadding="0">
<tr>
<td> </td>
</tr>
<tr>
<td><div align="center">
<input type="submit" class="boton" value="Modificar clave" name="modificar" />
<input type="reset" class="boton" value="Borrar campos" />
</div></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td><span class="Estilo1">Todos los campos son obligatorios</span></td>
</tr>
<tr></tr>
<tr>
<td> </td>
</tr>
<tr>
<td><a href="index.php">Volver</a></td>
</tr>
</table>
</form>
que lleva a este archivo con el siguiente codigo:
Código PHP:
<?
session_start();
if (isset($_COOKIE["unick"])) {
include("php/config.php");
$sesion = $_COOKIE["unick"];
if (isset($_POST["modificar"])) {
$a = $_POST["pass"];
$b1 = $_POST["nueva"];
$b2 = $_POST["nueva2"];
if($a==NULL|$b1==NULL|$b2==NULL) {
echo "Un campo está vacio. Vuelva a intentarlo <a href=cambiar_clave.php>clic aquí</a>";
}else{
$con = mysql_query("SELECT * FROM usuarios WHERE nick='$session'");
$mostrar = mysql_fetch_assoc($con);
$actual = $mostrar['contrasena'];
echo $con;
if($actual!=$a) {
echo "\"Clave actual\" debe ser la clave que usas actualmente para iniciar sesion. Si no conoces esa clave, aconsejo ir a \"olvide mi clave\". <a href=cambiar_clave.php>Volver a intentarlo</a>";
}else{
if($b1!=$b2) {
echo "Las contraseñas no coinciden. <a href=cambiar_clave.php>Volver a intentarlo</a>";
}else{
$sql = "UPDATE usuarios set contrasena='".md5($_POST['contrasena'])."')='$b1' WHERE nick = '$sesion'";
$res = mysql_query($sql) or die("Error: ".mysql_error());
echo "Tu clave ha sido modificada correctamente. Esta es tu nueva clave: <b>".$b1."</b>.<br>Tu cuenta se cerró y tendras que volver a abrirla. <a href=index.php>Volver a la pagina princial</a>";
$_SESSION = array();
}
}
}
}
}else{
echo 'Tu no estas autentificado. No puedes entrar aqui!!<br><br><a href="index.php">Volver</a>';
}
?>
Pero el
problema es de momento es que poniendo en contraseña acual la contraseña bien puesta, con la que entro vamos. me sale el mensaje:
"Clave actual" debe ser la clave que usas actualmente para iniciar sesion. Si no conoces esa clave, aconsejo ir a "olvide mi clave".
y no se que hacer. creo que el fallo puede estar aqui:
$con = mysql_query("SELECT * FROM usuarios WHERE nick='$session'");
$mostrar = mysql_fetch_assoc($con);
$actual = $mostrar['contrasena'];
pero no estoy seguro, si alguien puede revisar el codigo se lo agradeceria muchisimo. y recuerden que la contraseña está en
md5
gracias de antemano y un saludo.