Foros del Web » Programando para Internet » PHP »

problema con funcion de cambio de contraseña

Estas en el tema de problema con funcion de cambio de contraseña en el foro de PHP en Foros del Web. Hola, tengo un sistema de usuarios que vengo haciendo y se me dio por hacer un cambio de contraseña, la funcion por lo que vi ...
  #1 (permalink)  
Antiguo 14/10/2011, 22:10
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 42
Antigüedad: 12 años, 8 meses
Puntos: 9
Pregunta problema con funcion de cambio de contraseña

Hola, tengo un sistema de usuarios que vengo haciendo y se me dio por hacer un cambio de contraseña, la funcion por lo que vi no parece estar mal, pero el problema es que cuando mando el formulario, no ejecuta el query, no hace nada!, me vuelve a redireccionar a la pagina login.php , aca les dejo los archivos por si las moscas, la funcion cambiar pass la tengo en conexion.php

conexion.php

Código PHP:
Ver original
  1. <?php
  2. $nombre_server[1] = 'localhost';
  3. $nombre_user[2] = 'root';
  4. $nombre_db[3] = 'estudiophp';
  5. $password[4] = '';
  6.  
  7.      $conexion = @mysql_connect($nombre_server[1],$nombre_user[2],$password[4]) or exit ('Los datos ingresados no existen');
  8.      mysql_select_db($nombre_db[3]) or exit('La base de datos no existe');
  9.  
  10.  
  11. if($_GET['desconectar'] == 1){//funcion de deslogeo
  12. $_SESSION['logeado'] = false;
  13. echo "Usted se a deslogeado con exito";
  14. }// cierro deslogeo
  15.  
  16.  
  17. if($_GET['borrar'] == 1){//funcion de eliminar cuenta
  18. mysql_query("DELETE FROM pruebas WHERE (nick=".$_SESSION['nick'].")");
  19. echo "Su cuenta a sido eliminada";
  20. $_SESSION['logeado'] = false;
  21. }//cierro eliminar cuenta
  22.  
  23.  
  24. if($_GET['cambiar'] == 1){//funcion de cambiar contraseña
  25.    if(isset($_POST['mandar'])){
  26.         if(isset($_POST['pass']) && isset($_POST['confnuevapass']) && isset($_POST['nuevapass'])){              $pass = $_POST['nuevapass'];
  27.                     $nick = $_SESSION['nick'];
  28.           $resultado = mysql_query("SELECT pass FROM pruebas WHERE (nick = '$nick')");
  29.           $fila = mysql_fetch_array($resultado);
  30.           if($fila['pass'] == md5($_POST['pass'])){
  31.             if($_POST['nuevapass'] == $_POST['confnuevapass']){
  32.                 if(mysql_query("UPDATE pruebas SET pass = md5('$pass') WHERE (nick = '$nick')")){
  33.                 echo "La contraseña se a cambiado con exito";
  34.                 }
  35.                 else{
  36.                 echo "No se a podido cambiar la contraseña, vuelva a intentar";
  37.                 }
  38.             }
  39.             else{
  40.             echo "Las contraseñas no coinciden";
  41.             }
  42.           }
  43.          else{
  44.             echo "La contraseña insertada no coincide con la de la base de datos";
  45.          }
  46.         }
  47.         else{
  48.         echo "Debera rellenar todos los campos";
  49.         }  
  50.    }
  51. ?>
  52. <form method="post" action="login.php">
  53. contraseña anterior<input type="text" name="pass">
  54. nueva contraseña<input type="text" name="nuevapass">
  55. repetir contraseña<input type="text" name="confnuevapass">
  56. <input type="submit" name="mandar">
  57. </form>
  58. <?php
  59. }// cierro cambiar pass
  60. ?>

registro.php

Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3. if(isset($_POST['registro']))
  4. {
  5.   if(($_POST['nick'] != '') && ($_POST['pass'] != '') && ($_POST['mail'] != ''))
  6.   {
  7.    if($_POST['pass'] == $_POST['confpass'])
  8.     {
  9.      $nick = $_POST['nick'];
  10.      $pass = md5($_POST['pass']);
  11.      $mail = $_POST['mail'];
  12.       $resultado = mysql_query("SELECT nick, mail FROM pruebas WHERE (nick = '$nick') OR (mail = '$mail')");
  13.       $fila = mysql_fetch_array($resultado);
  14.       if($fila['nick'] == $nick)
  15.       {
  16.       echo "El nick esta en uso";
  17.       }
  18.       elseif($fila['mail'] == $mail)
  19.       {
  20.       echo "El mail esta en uso";
  21.       }
  22.       else
  23.       {
  24.       if(eregi("@" , $mail)){
  25.       $codigo= uniqid();
  26.       mysql_query("insert into pruebas(nick,pass,mail,codigo,estado) values                                         ('$nick','$pass','$mail','$codigo',0)");
  27.       echo 'Los datos han sido enviados correctamente';
  28.       }
  29.       else
  30.       echo "Mail no valido";
  31.       }
  32.     }
  33.     else
  34.     {
  35.     echo 'Las contraseñas no coinciden';
  36.     }
  37.   }
  38.     else
  39.     {
  40.     echo 'Debera rellenar todos los campos';
  41.     }
  42. }
  43. if($_SESSION['logeado'] == true){
  44. echo "Usted esta logeado";
  45. }
  46. else{
  47. ?>
  48. <html>
  49. <head>
  50. <title>Registro</title>
  51. </head>
  52. <body>
  53. <form method="post" action="registro.php">
  54. nick
  55. <input type="text" name="nick" value="<?php echo $_POST['nick'];?>">
  56. pass
  57. <input type="text" name="pass">
  58. confirmar contraseña
  59. <input type="text" name="confpass">
  60. mail
  61. <input type="text" name="mail" value="<?php echo $_POST['mail'];?>">
  62. <input type="submit" value="enviar" name="registro">
  63. </form>
  64. </body>
  65. </html>
  66. <?php
  67. }
  68. ?>

login.php

Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3. if(isset($_POST['enviar']))
  4. {
  5.     $nick = $_POST['nick'];
  6.     $pass = $_POST['pass'];
  7.     if(isset($nick) && isset($pass))
  8.     {
  9.         $resultado = mysql_query("SELECT nick, pass ,estado FROM pruebas WHERE (nick = '$nick') AND (pass = md5('$pass'))");
  10.         if(mysql_num_rows($resultado) > 0)
  11.         {
  12.             $fila = mysql_fetch_array($resultado);
  13.             if($fila['estado'] == 1){
  14.                 $_SESSION['nick'] = $nick;
  15.                 $_SESSION['logeado'] = true;
  16.             }
  17.             else{
  18.                 echo "Su cuenta no a sido activada";
  19.             }
  20.         }
  21.         else{
  22.         echo "Usuario o contraseña incorrectos.";
  23.         }
  24.     }
  25.     else{
  26.     echo "Usuario o contraseña incorrectos.";
  27.     }
  28. }
  29. ?>
  30. <?php
  31. if($_SESSION['logeado'] == true){//abre logeo
  32. echo "Usted ".$_SESSION['nick']." esta logeado";
  33. ?>
  34. </br></br>
  35. <a href="<?php $_SERVER['PHP_SELF']?>?desconectar=1">Salir</a>
  36. </br>
  37. </br>
  38. <a href="<?php $_SERVER['PHP_SELF']?>?borrar=1">Eliminar cuenta</a>
  39. </br>
  40. </br>
  41. <a href="<?php $_SERVER['PHP_SELF']?>?cambiar=1">Cambiar contraseña</a>
  42. <?php
  43. }//if donde termina el logeo
  44. else{
  45. ?>
  46. <html>
  47. <head>
  48. <title>Login</title>
  49. </head>
  50. <body>
  51. <form method="post" action="login.php">
  52. Nick:<input type="text" name="nick">
  53. Password:<input type="text" name="pass">
  54. <input type="submit" name="enviar">
  55. </form>
  56. </body>
  57. </html>
  58. <?php
  59. }
  60. ?>

perfil.php

Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3. if($_SESSION['logeado'] == true){
  4. echo "Usted ".$_SESSION['nick']." esta logeado";
  5. ?>
  6. </br></br>
  7. <a href="<?php $_SERVER['PHP_SELF']?>?desconectar=1">Salir</a>
  8. <?php
  9. }
  10. else{
  11. ?>
  12. <html>
  13. <head>
  14. <title>Perfil</title>
  15. </head>
  16. <body>
  17. <span>Solo apto para usuarios registrados, para registrarse haga click <a href="registro.php">aqui</a> o, si ya esta registrado y desea logearse haga click <a href="login.php">aqui</a></span>
  18. </body>
  19. </html>
  20. <?php
  21. }
  22. ?>

confirmar.php

Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3. $codigo = $_GET['codigo'];
  4. $resultado = mysql_query("SELECT estado FROM pruebas WHERE (codigo = '$codigo')");
  5. $fila = mysql_fetch_array($resultado);
  6. if($fila['estado'] == 0){
  7.     $estado = 1;
  8.     if(mysql_query("UPDATE pruebas SET estado = '$estado' WHERE (codigo = '$codigo')")){
  9.         echo "Su cuenta a sido activada";
  10.     }
  11.     else{
  12.     echo "Se a producido un error, por favor vuelva a recargar la pagina";
  13.     }
  14. }
  15. ?>
  16. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  17. <html xmlns="http://www.w3.org/1999/xhtml">
  18. <head>
  19. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  20. <title>Coonfirmar cuenta</title>
  21. </head>
  22. <body>
  23. </body>
  24. </html>

PD: Le hice un sistema de confirmar por mail, anda perfecto pero no se porque el xampp no me manda los mails
  #2 (permalink)  
Antiguo 14/10/2011, 22:18
 
Fecha de Ingreso: octubre-2011
Ubicación: USA
Mensajes: 166
Antigüedad: 12 años, 6 meses
Puntos: 19
Respuesta: problema con funcion de cambio de contraseña

mirando por arribita en la pagina conexion.php session_star(); debe ir delante de cualquier codigo, no se si es del todo tu problema pero ve cambiando eso y vuelve a intentarlo.

Saludos.
  #3 (permalink)  
Antiguo 14/10/2011, 22:21
 
Fecha de Ingreso: octubre-2011
Ubicación: USA
Mensajes: 166
Antigüedad: 12 años, 6 meses
Puntos: 19
Respuesta: problema con funcion de cambio de contraseña

te manda a login porque el action del form le estas indicando que vaya a ese lugar, en la parte del codigo donde haces el update de la clave le puedes decir que si la consulta se ejcuto correctamente te renvie a la pagian que quieras.

Saludos
  #4 (permalink)  
Antiguo 15/10/2011, 12:19
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 42
Antigüedad: 12 años, 8 meses
Puntos: 9
Respuesta: problema con funcion de cambio de contraseña

shaserUsa lo que me dijiste me ayudo a descubrir el error, el action del form era login.php , lo cambie a login.php?cambiar=1 y me anduvo, gracias

Etiquetas: contraseña, login, mail, pass, xampp
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:49.