Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/10/2009, 12:40
chevlo
 
Fecha de Ingreso: febrero-2008
Mensajes: 53
Antigüedad: 16 años, 3 meses
Puntos: 0
Pregunta formulario Cambio clave en md5

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>&nbsp;</td>
  </tr>
  <tr>
    <td><div align="center">
      <input type="submit" class="boton" value="Modificar clave" name="modificar" />
      &nbsp;&nbsp;&nbsp;
      <input type="reset" class="boton" value="Borrar campos" />
    </div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><span class="Estilo1">Todos los campos son obligatorios</span></td>
  </tr>
  <tr></tr>
  <tr>
    <td>&nbsp;</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.