Foros del Web » Programando para Internet » PHP »

formulario Cambio clave en md5

Estas en el tema de formulario Cambio clave en md5 en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 27/10/2009, 12:40
 
Fecha de Ingreso: febrero-2008
Mensajes: 53
Antigüedad: 16 años, 2 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.
  #2 (permalink)  
Antiguo 27/10/2009, 12:42
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: formulario Cambio clave en md5

sera por que comparas contraseña codificada con una sin codificar?


intenta

Código php:
Ver original
  1. if($actual!=md5($a)) {
  #3 (permalink)  
Antiguo 27/10/2009, 12:44
 
Fecha de Ingreso: febrero-2008
Mensajes: 53
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: formulario Cambio clave en md5

Cita:
Iniciado por Hidek1 Ver Mensaje
sera por que comparas contraseña codificada con una sin codificar?


intente if($actual!=md5($a)) {
y donde pongo eso exactamente?
gracias.
  #4 (permalink)  
Antiguo 27/10/2009, 12:45
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: formulario Cambio clave en md5

reemplaza la linea

Código php:
Ver original
  1. if($actual!=$a) {

por

Código php:
Ver original
  1. if($actual!=md5($a)) {
  #5 (permalink)  
Antiguo 27/10/2009, 12:48
 
Fecha de Ingreso: febrero-2008
Mensajes: 53
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: formulario Cambio clave en md5

mira, he echo un echo, para que me mostrara $a y lo que pasa es que me sale dos veces seguidas asi:

92397591fa7b84ff76833b1e10253fd292397591fa7b84ff76 833b1e10253fd2 y por eso no coincide la clave.

donde puede estar el fallo?

gracias yo sigo mirando.

Última edición por chevlo; 27/10/2009 a las 12:53
  #6 (permalink)  
Antiguo 27/10/2009, 12:55
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: formulario Cambio clave en md5

ermm si tu dices que en sql las claves estan codificadas en md5... y

Código php:
Ver original
  1. $a = $_POST["pass"];  // $a seria la variable que tiene la contraseña para verificar si es el propietario de la cuenta
  2.  
  3. if($actual!=$a) {  //aca te dice si no son iguales muestra el mensaje...
  4. 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>";
  5. }

2 posibles problemas..
el post o sql
creo yo que es sql...


Código php:
Ver original
  1. $actual = $mostrar['contrasena']; // abajo de esta linea pone esto
  2. echo $actual . " = ". $a;


y pega aca el resultado
  #7 (permalink)  
Antiguo 27/10/2009, 13:01
 
Fecha de Ingreso: febrero-2008
Mensajes: 53
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: formulario Cambio clave en md5

bc0d771907830c28fd7486da520ee5e0 = 92397591fa7b84ff76833b1e10253fd292397591fa7b84ff76 833b1e10253fd2"Clave actual" debe ser la clave que usas actualmente para iniciar sesion. Si no conoces esa clave, aconsejo ir a "olvide mi clave". Volver a intentarlo

me sale esto lo que pasa es que la actual no es esta bc0d771907830c28fd7486da520ee5e0

sino esta

92397591fa7b84ff76833b1e10253fd2

no entiendo nada jajajajjaja pa mear y no ehcar ni gota.
  #8 (permalink)  
Antiguo 27/10/2009, 13:08
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: formulario Cambio clave en md5

ermmm
estas seguro que esa es la clave en sql?.... 92397591fa7b84ff76833b1e10253fd2

por que si es asi deberia mostrar esa en $actual .. a menos que estes haciendo un paso demas y volviendo a codificar la constraseña o algo... revisa bien si tienes mas md5 por ahi eskondidos @.@

revisa en sql si es esa la contraseña.. si no es cambiala manual por ultimo para que pruebes
  #9 (permalink)  
Antiguo 27/10/2009, 13:23
 
Fecha de Ingreso: febrero-2008
Mensajes: 53
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: formulario Cambio clave en md5

Cita:
Iniciado por Hidek1 Ver Mensaje
ermmm
estas seguro que esa es la clave en sql?.... 92397591fa7b84ff76833b1e10253fd2

por que si es asi deberia mostrar esa en $actual .. a menos que estes haciendo un paso demas y volviendo a codificar la constraseña o algo... revisa bien si tienes mas md5 por ahi eskondidos @.@

revisa en sql si es esa la contraseña.. si no es cambiala manual por ultimo para que pruebes
he encontrado ese md5 en la bd es de otro usuario diferente. que pasa?
  #10 (permalink)  
Antiguo 27/10/2009, 13:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: formulario Cambio clave en md5

$a ya esta en MD5??

pues ¿que haces?? ¿que escribes en el formulario??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 27/10/2009, 13:31
 
Fecha de Ingreso: febrero-2008
Mensajes: 53
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: formulario Cambio clave en md5

Cita:
Iniciado por pateketrueke Ver Mensaje
$a ya esta en MD5??

pues ¿que haces?? ¿que escribes en el formulario??
en el formulario escribo por ejemplo 071107 y luego en el codigo cambiar_clave2.php
la covierto en md5 asi

$a = md5($_POST["pass"]);

y va bien por coincide con la contraseña de la base de datos del usuario con el que estoy conectado.

pero el caso es que $actual siempre sale esa clave y no se por que.
  #12 (permalink)  
Antiguo 27/10/2009, 13:34
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: formulario Cambio clave en md5

por que la constraseña que tienes almacenada debe ser esa :S
insisto en que entres a phpmyadmin y cambies manual la contraseña para que pruebes :P
  #13 (permalink)  
Antiguo 27/10/2009, 13:40
 
Fecha de Ingreso: febrero-2008
Mensajes: 53
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: formulario Cambio clave en md5

Cita:
Iniciado por Hidek1 Ver Mensaje
por que la constraseña que tienes almacenada debe ser esa :S
insisto en que entres a phpmyadmin y cambies manual la contraseña para que pruebes :P
tio gracias, por hoy me tengo que ir, mñana seguire intentando. estamos cerca, algo falla aver que puede ser.
  #14 (permalink)  
Antiguo 28/10/2009, 12:56
 
Fecha de Ingreso: febrero-2008
Mensajes: 53
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: formulario Cambio clave en md5

Tio, ya lo conseguí eran dos o tres tonterias que habia que mirar bien, por ejemplo :

$sesion = $_COOKIE["unick"]; puse esto así

y luego la llamaba asi: $session con dos s ese era uno de los fallos de todas formas pego el codigo aki para que le pueda servir a la gente.

gracias por todo Hidek1. un saludo.

Código PHP:
<?


        
global $web;
        global 
$feed;
        global 
$portadas;
        global 
$genero_id;
        global 
$genero_titulo;
        global 
$ficha_titulo;
        global 
$ficha_id;
        
    
$salida='<div id="interior" class="interior">';    
    
$salida.='<div id="buzon" class="buzon">';    
    
$salida.='<h2>Cambiar Clave de Acceso</h2>';    

$salida.='<form action="'.$web.'cambiar-clave/" method="POST">
  <table width="100%" cellpadding="0" cellspacing="5">
  <tr>
    <td width="31%" align="right"><strong>Nick:</strong></td>
    <td width="69%"><input name="nick" type="nick" class="file" size="15"></td>
  </tr>
  <tr>
    <td width="31%" align="right"><strong>Clave actual:</strong></td>
    <td width="69%"><input name="pass" type="password" class="file" size="30"></td>
  </tr>
  <tr>
    <td align="right"><strong>Nueva clave:</strong></td>
    <td><input name="nueva" type="password" class="file" size="30"></td>
  </tr>
  <tr>
    <td align="right"><strong>Confirmar nueva clave:</strong></td>
    <td><input name="nueva2" type="password" class="file"size="30"></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="">Volver</a></td>
  </tr>
</table>
</form> '
;

session_start();
if (isset(
$_COOKIE["unick"])) {
include(
"php/config.php");

$session $_COOKIE["unick"];

if (isset(
$_POST["modificar"])) {
$nick $_POST["nick"];
$a md5($_POST["pass"]);
$b1 $_POST["nueva"];
$b2 $_POST["nueva2"];

if(
$a==NULL|$b1==NULL|$b2==NULL|$nick==NULL) {
$salida.= '<h2>ERROR</h2>
                    <div class="info">
                        <p>Asegurese de rellenar todos los campos - <a href='
.$web.'cambiar-clave/><strong>Volver a intentarlo</strong></a></p>
                    </div>' 
;
}else{
mysql_close();
/*$con = mysql_query("SELECT * FROM usuarios WHERE nick='$session'");
$mostrar = mysql_fetch_array($con);*/

include("php/config.php");
    
$query='SELECT * FROM usuarios WHERE id='.$_COOKIE['uid'];
    
$result=mysql_query($query);
    
mysql_close();
    while(
$registro mysql_fetch_array($result)) {    
    
$actual =  $registro['contrasena'];}
            
            
//echo $actual . " = ". $a ;
            

if($actual!=$a) {

$salida.= '<h2>ERROR</h2>
                    <div class="info">
                        <p>"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='
.$web.'cambiar-clave/><strong>Volver a intentarlo</strong></a></p>
                    </div>' 
;
}else{

if(
$b1!=$b2) {
$salida.= '<h2>ERROR</h2>
                    <div class="info">
                        <p>Error en la confirmacion de la nueva clave, asegurese de que coinciden en ambos casos. - <a href='
.$web.'cambiar-clave/><strong>Volver a intentarlo</strong></a></p>
                    </div>' 
;
}else{

include(
"php/config.php");    
$query='UPDATE usuarios SET contrasena="'.md5($b1).'" WHERE id='.$_COOKIE['uid'];
$result=mysql_query($query) or die("Error: ".mysql_error());
$salida.= '<h2>Modificacion Exitosa</h2>
                    <div class="info">
                        <p>Tu clave ha sido modificada correctamente. Esta es tu nueva clave:<strong>'
.$b1.'</strong>. Recuerdala la proxima vez que quieras iniciar sesion. Haz click <a href='.$web.'><strong>aqui</strong></a> para volver</p>
                    </div>' 
;

$_SESSION = array();

}
}
}
}
}else{
$salida.= '<h2>ATENCION</h2>
                    <div class="info">
                        <p>Tu no estas autentificado. No puedes entrar aqui!!</p>
                    </div>' 
;
//echo 'Tu no estas autentificado. No puedes entrar aqui!!<br><br><a href="index.php">Volver</a>';
}  

$salida.='</div>';
$salida.='</div>';
    return 
$salida;
}

?>
en action, mando el formulario al mismo archivo como podras ver, lo unico que no consigo es que cuando de la respuesta de lo que sea, ya sea fallo o no me sigue apararecioendo el formulario arriba supongo que sera con un if y un else pero no se como ponerlo, si puede alguien ayudarme lo agradeceria.

un saludo
y gracias .
  #15 (permalink)  
Antiguo 28/10/2009, 13:00
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: formulario Cambio clave en md5

de nada que bueno que aya funcionado!

PD: no entendi la pregunta de abajo!
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 07:40.