Foros del Web » Programando para Internet » PHP »

Cambiar clave BD

Estas en el tema de Cambiar clave BD en el foro de PHP en Foros del Web. Hola, tengo un pequeño problema. Tengo un sistema de usuarios y quiero que tengan la opcion de "cambiar clave". Le puse que si la clave ...
  #1 (permalink)  
Antiguo 19/01/2008, 20:47
 
Fecha de Ingreso: diciembre-2006
Mensajes: 294
Antigüedad: 17 años, 4 meses
Puntos: 2
Cambiar clave BD

Hola, tengo un pequeño problema. Tengo un sistema de usuarios y quiero que tengan la opcion de "cambiar clave". Le puse que si la clave de la base de datos es diferente a la que ingresó, tire error, sino que siga... Pero le pongo la clave exacta y me tira el error.

Ya me vuelvo loco buscando y buscando y nada... aca les dejo los codigos a ver si ustedes lo encuentra por favor.

cambiar_clave.php
Código PHP:
<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

cambiar_clave2.php
Código PHP:
session_start();
if (isset(
$_SESSION['s_username'])) {
include(
"config_usuarios.php");

$sesion $_SESSION['s_username'];

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 username='$username'");
$mostrar mysql_num_rows($con);

$actual $mostrar[password];

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 password='$b1' WHERE username = '$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>';


Si la clave actual que escribo es igual o diferente siempre me tira el error, es decir, este mensaje:

"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
  #2 (permalink)  
Antiguo 19/01/2008, 21:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Cambiar clave BD

Creo esta linea es la del error:
Código PHP:
$con mysql_query("SELECT * FROM usuarios WHERE username='$username'"); 
Deberia de ser:
Código PHP:
$con mysql_query("SELECT * FROM usuarios WHERE username='$sesion'"); 
Saludos.
  #3 (permalink)  
Antiguo 19/01/2008, 22:19
 
Fecha de Ingreso: diciembre-2006
Mensajes: 294
Antigüedad: 17 años, 4 meses
Puntos: 2
Re: Cambiar clave BD

Gracias, ni cuenta me había dado... pero lo raro es que sigue dando el mismo error, y la clave es idéntica.. No veo cual puede ser otro error.
  #4 (permalink)  
Antiguo 19/01/2008, 22:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Cambiar clave BD

Que error te marca?

Saludos.
  #5 (permalink)  
Antiguo 20/01/2008, 09:08
 
Fecha de Ingreso: diciembre-2006
Mensajes: 294
Antigüedad: 17 años, 4 meses
Puntos: 2
Re: Cambiar clave BD

Este:

Código PHP:
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{ 
Digamos, el mensaje este de que la clave de la base de datos es diferente a la clave que ingreso, pero no es así. Lo escribo bien, seguro hay un error
  #6 (permalink)  
Antiguo 20/01/2008, 12:39
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Cambiar clave BD

No encriptas tu clave para insertarla en la base de datos?

Si es que lo haces, debes usar el mismo método de encriptación en la clave llegada del formulario para comparar recién con la que obtienes de la base de datos.

Un saludo,
  #7 (permalink)  
Antiguo 20/01/2008, 12:49
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: Cambiar clave BD

$mostrar = mysql_num_rows($con);

Con eso sacas el número de elementos que ha devuelto la consulta.
Después de eso deberías comprobar que ha devuelto al menos un resultado y asignarle el valor del campo que quieras a la variable con las que vas a comprobar el pass después.

Código PHP:

$con 
mysql_query("SELECT password FROM usuarios WHERE username='$sesion'"); 
if (
mysql_num_rows($con) > 0) {
     
$mostrar mysql_fetch_row($con);
     
$actual $mostrar['password'];

     
//Resto de código.


  #8 (permalink)  
Antiguo 20/01/2008, 12:52
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Cambiar clave BD

Eso es, el error está en que usas la función mysql_num_rows() cuando debes usar la función mysql_fetch_assoc(), aquí:

Código PHP:
$mostrar mysql_num_rows($con); 
$actual $mostrar[password]; 
debería ser:
Código PHP:
$mostrar mysql_fetch_assoc($con); 
$actual $mostrar['password']; //De preferencia entre comillas 
Un saludo,
  #9 (permalink)  
Antiguo 20/01/2008, 14:09
 
Fecha de Ingreso: diciembre-2006
Mensajes: 294
Antigüedad: 17 años, 4 meses
Puntos: 2
Re: Cambiar clave BD

Gracias!

La verdad no tenia idea... siempre usé mysql_num_rows();

Última edición por GatorV; 20/01/2008 a las 15:56
  #10 (permalink)  
Antiguo 20/01/2008, 17:15
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 5 meses
Puntos: 25
Re: Cambiar clave BD

por lo que veo ya esta solucionado.
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 13:17.