Foros del Web » Programando para Internet » PHP »

se pirder valor de session al hacer UPDATE

Estas en el tema de se pirder valor de session al hacer UPDATE en el foro de PHP en Foros del Web. Hola a todos, tengo un archivo donde el usuario puede cambiar el password, en ese archivo pido el nuevo password, el anterior y hago el ...
  #1 (permalink)  
Antiguo 27/06/2011, 10:05
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 14 años, 11 meses
Puntos: 27
se pirder valor de session al hacer UPDATE

Hola a todos, tengo un archivo donde el usuario puede cambiar el password, en ese archivo pido el nuevo password, el anterior y hago el UPDATE
El problema es que al hace el UPDATE, se pierde la session de usuario... Porque?
Este es el documento:
login.php

Código PHP:
Ver original
  1.  
  2. if (isset($_SESSION['estud']) )
  3. {
  4. ?>
  5. <form action="cuenta.php" method="post" name="form1" id="form1">
  6.  
  7. Nombre de usuario
  8.  
  9. <input type="text" name="usuario" value="<?php echo $fila["NOMBRE"]?>"/>
  10.  
  11. Password actual:
  12.  <input  type="password" name="pass" id="pass"/>
  13.  
  14. Nuevo password:
  15. <input type="password" name="c1" />
  16.  
  17. Confirmar Nuevo password:
  18.  <input type="password" name="c2" />
  19.  
  20.  <input type="submit" name="modificar" value="Actualizar contraseña">
  21.  
  22.  
  23. </form>
  24.  
  25. //Aca hago el UPDATE:
  26.  
  27.  <?php
  28.   if(isset($_POST['usuario'])){
  29.    
  30.    
  31.     $usuario=$_POST['usuario'];
  32.     $password=$_POST['pass'];
  33.     $nuevo=$_POST['c1'];
  34.     include ("config.php");
  35. include ("opendb.php");
  36.  
  37. $sql="SELECT PASSWORD FROM users WHERE NOMBRE='".$usuario."'";
  38. $resultado = mysql_query($qry);
  39.     if ( !resultado )
  40.         die( "Error ejecutando la Consulta");
  41.  
  42. $fila = mysql_fetch_array( $resultado );
  43.  
  44. $antes=$fila[1];
  45.  
  46.  
  47.  
  48. if($antes==$password)
  49. {
  50.    
  51.  
  52. $update= "update users  set PASSWORD  = '".$nuevo."' where NOMBRE = '".$usuario."'";
  53.  
  54.  
  55. $resultado = mysql_query ($update);
  56.  
  57. echo "<font color='red'><h3>El password ha sido actualizado</h3></font>";
  58.        
  59.  
  60.    
  61.    
  62. }
  63.  
  64. else
  65. {
  66.    
  67.  echo "<font color='red'><h3>El password ingresado no corresponde al del usuario</h3></font>";  
  68.    
  69. }
  70.    
  71.    
  72.     }
  73. <?
  74. }
  75. else
  76. {
  77. not_auth();
  78. }
  79. ?>

El password normalmente si se actualiza y todo, pero apenas pasa eso, la session de usuario se pierde y ese es el problema que tengo, alguien sabe como puedo solucionar esto?

Gracias por la ayuda....
  #2 (permalink)  
Antiguo 27/06/2011, 10:09
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 2 meses
Puntos: 209
Respuesta: se pirder valor de session al hacer UPDATE

vayamos por parte
abre los tags php así
<?php
y no
<?
  #3 (permalink)  
Antiguo 27/06/2011, 10:19
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 14 años, 11 meses
Puntos: 27
Respuesta: se pirder valor de session al hacer UPDATE

Asi lo tengo...y sigue en lo mismo
  #4 (permalink)  
Antiguo 27/06/2011, 11:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: se pirder valor de session al hacer UPDATE

Yo no creo que la razón del problema esté en el UPDATE, la verdad es que ando imaginando que has de hacer algo mal en los scripts que incluyes.

¿Que podrías hacer ahí?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 27/06/2011, 12:25
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 14 años, 11 meses
Puntos: 27
Respuesta: se pirder valor de session al hacer UPDATE

Los archivos que incluyo son de conexion a la base de datos....
config:
Código PHP:
Ver original
  1. <?php
  2.  
  3. $dbhost = 'localhost';
  4. $dbuser = 'root';
  5. $dbpass = 'root';
  6. $dbname = 'mi_database';
  7. ?>

y opendb:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
  4. mysql_select_db($dbname);
  5.  
  6. ?>

Es lo unico que incluyo, aa y dondde se crea la session:

funciones.php


Código PHP:
Ver original
  1. function check_valid_user()
  2. // see if somebody is logged in and notify them if not
  3. {
  4.   if (isset($_SESSION['valid_user']) || ($_SESSION['estud']) )
  5.   {
  6.  
  7.  
  8.       $text = "<h3><font size='2' color='#FF0000'>
  9.               Estas logeado como ".$_SESSION['valid_user']."<br><p></font></h3>";
  10.       $i=1;
  11.      
  12.       $arr[0] = $text;
  13.       $arr[1] = $i;
  14.      
  15.      
  16.      
  17.       return $arr;
  18.      
  19.   }
  20.   else
  21.   {
  22.      // they are not logged in
  23.      $text = "<h3><font size='2' color='#FF0000'>
  24.               No estas logeado</font></h3>";
  25.      $i=0;
  26.      
  27.      $arr[0] = $text;
  28.      $arr[1] = $i;
  29.      
  30.      return $arr;
  31.      
  32.   }  
  33.  
  34. }

Pero es de la unica forma que se pierde la session.....
  #6 (permalink)  
Antiguo 27/06/2011, 12:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: se pirder valor de session al hacer UPDATE

Hmmm, ya, verdaderamente extraño.

No entiendo la razón de que pierdas la sesión, pero vamos a hacer lo siguiente.

En primer lugar, ¿solo en el script que muestras es donde pierdes la sesión?

¿Te ocurre en algún otro lugar, bajo otra circunstancia?

Es que de verdad no tiene por que afectar una simple consulta a la sesión, pues no hay relación.

Pero se me acaba de ocurrir que, en algún otro script has de verificar el inicio de sesión, y puesto a que has cambiado de contraseña se cierra automáticamente.

¿Es posible?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 27/06/2011, 13:12
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 14 años, 11 meses
Puntos: 27
Respuesta: se pirder valor de session al hacer UPDATE

Mira como esta:
en funcion.php tambien existe esto:

Código PHP:
Ver original
  1. function login_in($usuario, $clave)
  2. // check username and password with db
  3. // if yes, return true
  4. // else throw exception
  5. {
  6.   // connect to db
  7.   include("config.php");
  8.   include("opendb.php");
  9.   $sql = "SELECT * FROM users WHERE NOMBRE=".$usuario."' and PASSWORD='".$clave."'";
  10.   $result = mysql_query($sql);
  11.  
  12.  
  13.   if (mysql_num_rows($result) > 0)
  14.      return 1;
  15.   else
  16.      return 0;
  17. }

Y un archivo de autenticacion que tiene:

autenticacion.php

Código PHP:
Ver original
  1. <?
  2. require_once('funciones.php');
  3.  
  4. $usuario=$_POST['usuario'];
  5. $clave=$_POST['clave'];
  6.  
  7. if (login_in($usuario, $clave)==1)
  8. {
  9.    
  10.     if ($usuario=="admin"){
  11.         $_SESSION['valid_user'] = $usuario;
  12.        
  13.         header("Location: administracion.php");
  14.     }
  15.     if ($usuario!="admin")
  16.     {
  17.         $_SESSION['estud'] = $usuario;
  18.         header("Location: admin.php?optegresado=$usuario");
  19.  
  20.     }
  21. }
  22. else
  23. {
  24. echo "No estas logueado";
  25. }
  #8 (permalink)  
Antiguo 27/06/2011, 13:14
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 14 años, 11 meses
Puntos: 27
Respuesta: se pirder valor de session al hacer UPDATE

En ningun momento me aparece:
No estas logueado
Cuando la contraseña se actualiza, se pierde la session en login.php

Cuando regreso atras (con el boton del navegador), la session vuelve
  #9 (permalink)  
Antiguo 27/06/2011, 13:21
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 1 mes
Puntos: 53
Respuesta: se pirder valor de session al hacer UPDATE

Cita:
#
$sql="SELECT PASSWORD FROM users WHERE NOMBRE='".$usuario."'";
#
$resultado = mysql_query($qry);
#
if ( !resultado )
#
die( "Error ejecutando la Consulta");
#

#
$fila = mysql_fetch_array( $resultado )
$resultado = mysql_query($qry);
en este if quien es $qry?

y que variable es !resultado? ..no es !$resultado??
Cita:
#
$sql = "SELECT * FROM users WHERE NOMBRE=".$usuario."' and PASSWORD='".$clave."'";
#
$result = mysql_query($sql);
y en este te hace falta una comilla simple antes de usuario
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #10 (permalink)  
Antiguo 27/06/2011, 14:01
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 14 años, 11 meses
Puntos: 27
Respuesta: se pirder valor de session al hacer UPDATE

Ok ya corregi eso, pero sigue en lo mismo, perdiendo la session ......
Realmente no se que pueda ser....
  #11 (permalink)  
Antiguo 27/06/2011, 15:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: se pirder valor de session al hacer UPDATE

Cita:
Iniciado por oscarbt Ver Mensaje
Ok ya corregi eso, pero sigue en lo mismo, perdiendo la session ......
Realmente no se que pueda ser....
Te vuelvo a preguntar lo mismo:
Cita:
Iniciado por pateketrueke Ver Mensaje
[...]

En primer lugar, ¿solo en el script que muestras es donde pierdes la sesión?

¿Te ocurre en algún otro lugar, bajo otra circunstancia?

[...]
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 27/06/2011, 16:39
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 14 años, 11 meses
Puntos: 27
Respuesta: se pirder valor de session al hacer UPDATE

Si, solo es en ese, en otros lados no ocurre lo mismo..........
  #13 (permalink)  
Antiguo 27/06/2011, 16:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: se pirder valor de session al hacer UPDATE

Me pregunto que pasará si cambias los <? por <?php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 27/06/2011, 17:27
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 14 años, 11 meses
Puntos: 27
Respuesta: se pirder valor de session al hacer UPDATE

Eso ya lo cambie, iviamontes, en su respuesta me indico esa observación, y ya la cambie y el problema continua...
  #15 (permalink)  
Antiguo 27/06/2011, 20:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: se pirder valor de session al hacer UPDATE

A ver, muestra de nuevo tu script completo y corregido.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #16 (permalink)  
Antiguo 29/06/2011, 08:01
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 14 años, 11 meses
Puntos: 27
Respuesta: se pirder valor de session al hacer UPDATE

Ok aca va:

los arhivos de conexion siguen lo mismo...

arhivo funciones.php


Código PHP:
Ver original
  1. <?php
  2. function check_valid_user()
  3. // see if somebody is logged in and notify them if not
  4. {
  5. if (isset($_SESSION['valid_user']) || ($_SESSION['estud']) )
  6. {
  7.  
  8.  $text = "<h3><font size='2' color='#FF0000'>
  9. Estas logeado como ".$_SESSION['valid_user']."<br><p></font></h3>";
  10.  $i=1;
  11.   $arr[0] = $text;
  12.  $arr[1] = $i;
  13.  return $arr;
  14.  
  15.  }
  16.  else
  17.  {
  18. // they are not logged in
  19. $text = "<h3><font size='2' color='#FF0000'>
  20. No estas logeado</font></h3>";
  21. $i=0;
  22. $arr[0] = $text;
  23. $arr[1] = $i;
  24. return $arr;
  25. }
  26. }
  27. function login_in($usuario, $clave)
  28.  
  29. {
  30. // connect to db
  31. include("config.php");
  32. include("opendb.php");
  33. $sql = "SELECT * FROM users WHERE NOMBRE=".$usuario."' and PASSWORD='".$clave."'";
  34. $result = mysql_query($sql);
  35. if (mysql_num_rows($result) > 0)
  36. return 1;
  37. else
  38. return 0;
  39. }
  40. ?>

autenticacion.php

Código PHP:
Ver original
  1. <?php
  2. require_once('funciones.php');
  3. $usuario=$_POST['usuario'];
  4. $clave=$_POST['clave'];
  5. if (login_in($usuario, $clave)==1)
  6. {
  7. if ($usuario=="admin"){
  8.  $_SESSION['valid_user'] = $usuario;
  9.  header("Location: administracion.php");
  10.  }
  11.  if ($usuario!="admin")
  12.  {
  13.  $_SESSION['estud'] = $usuario;
  14.  header("Location: admin.php?optegresado=$usuario");
  15.  }
  16. }
  17. else
  18. {
  19. echo "No estas logueado";
  20. }
  21. ?>

y el archivo login.php (donde hago el UPDATE)

Código PHP:
Ver original
  1. <?php
  2. if (isset($_SESSION['estud']) )
  3. {
  4. ?>
  5. <html>
  6. <head>
  7. </head>
  8. <body>
  9. <form action="cuenta.php" method="post" name="form1" id="form1">
  10. Nombre de usuario
  11. <input type="text" name="usuario" value="<?php echo $fila["NOMBRE"]?>"/>
  12. Password actual:
  13. <input type="password" name="pass" id="pass"/>
  14. Nuevo password:
  15. <input type="password" name="c1" />
  16. Confirmar Nuevo password:
  17. <input type="password" name="c2" />
  18. <input type="submit" name="modificar" value="Actualizar contraseña">
  19. </form>
  20. <?php
  21. if(isset($_POST['usuario'])){
  22. $usuario=$_POST['usuario'];
  23. $password=$_POST['pass'];
  24. $nuevo=$_POST['c1'];
  25. include ("config.php");
  26. include ("opendb.php");
  27. $sql="SELECT PASSWORD FROM users WHERE NOMBRE='".$usuario."'";
  28. $resultado = mysql_query($sql);
  29.  if ( !$resultado )
  30. die( "Error ejecutando la Consulta");
  31. $fila = mysql_fetch_array( $resultado );
  32. $antes=$fila[1];
  33. if($antes==$password)
  34. {
  35. $update= "update users set PASSWORD= '".$nuevo."' where NOMBRE = '".$usuario."'";
  36. $resultado = mysql_query ($update);
  37. echo "<font color='red'><h3>El password ha sido actualizado</h3></font>";
  38. }
  39. else
  40. {
  41. echo "<font color='red'><h3>El password ingresado no corresponde al del usuario</h3></font>";  
  42. }
  43. }
  44. ?>
  45.  
  46. </body>
  47. </html>
  48. <?php
  49. }
  50. else
  51. {
  52. not_auth();
  53. }
  54. ?>

De esa forma he dejado los archivos pero el problema sigue, la session se sigue perdiendo.........
  #17 (permalink)  
Antiguo 29/06/2011, 08:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: se pirder valor de session al hacer UPDATE

Revise solo por encima y veo este pequeño error:
Código PHP:
// MAL
$sql "SELECT * FROM users WHERE NOMBRE=".$usuario."' and PASSWORD='".$clave."'";

// BIEN
$sql "SELECT * FROM users WHERE NOMBRE='".$usuario."' and PASSWORD='".$clave."'"
Creo que te falta una comilla de apertura al rededor de tu variable $usuario, ¿no?

Por eso es bueno depurar todas nuestras consultas, algo así:
Código PHP:
$result mysql_query($sql) or die(mysql_error()); 
Intenta hacer lo mismo con todas tus consultas, igual y te dan una sorpresa.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #18 (permalink)  
Antiguo 29/06/2011, 08:53
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 14 años, 11 meses
Puntos: 27
Respuesta: se pirder valor de session al hacer UPDATE

Ok acabo de encontrar el error....

cuando inicio la session:
if (isset($_SESSION['estud']) )
{

habia definido una variable:

$cedula=$_SESSION['estud'];

a través de la cual se hacia una consulta par cargar el password

entonces la consulta la hacia asi:

Código PHP:
Ver original
  1. $sql="SELECT * FROM tabla WHERE users='".$usuario."'";

Lo cambie a

Código PHP:
Ver original
  1. $sql="SELECT * FROM tabla WHERE users= ".$_SESSION['estud']."";

Y ya no se pierde el valor......creo que deberia haber funcionado con la variable....pero bueno menos mal ya encontre la Solución, muchas gracias pateketrueke por tu colaboración.....

Etiquetas: session, update
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 01:15.