Foros del Web » Programando para Internet » PHP »

Problema con SESSION

Estas en el tema de Problema con SESSION en el foro de PHP en Foros del Web. Buenos días, tengo un problema con el que me estoy comiendo la cabeza desde hace un par de días, y mi cliente molesto obviamente. Cuando ...
  #1 (permalink)  
Antiguo 10/04/2015, 02:49
 
Fecha de Ingreso: diciembre-2010
Mensajes: 180
Antigüedad: 13 años, 4 meses
Puntos: 5
Problema con SESSION

Buenos días, tengo un problema con el que me estoy comiendo la cabeza desde hace un par de días, y mi cliente molesto obviamente.

Cuando entro a la página, hay un login, al intentar loggearme resulta que el loggin no funciona...

Les cuento un poco más, cuando hace el loggin, la parte inferior de la página cambia como si estuviese loggeado en una cuenta (aparece un panel que los visitantes no ven y los usuarios sí, pero sin embargo el formulario de login sigue estando) después de eso al hacerse un refresh para que actualice la web, aparece nuevamente como desloggeado... Y no tengo idea de por qué puede ser, es como si la sesión se destruyera cuando la página recarga (aunque el formulario de loggin nunca cambiase...)

La estructura básica de la página (para no agregar tanto código) viene de esta forma:
Include de conexión
Include de start (<?php session_start(); ?>)
Menú de loggin:
Código PHP:
Ver original
  1. <?php
  2.                 }
  3.                     if(isset($_POST['entrar'])){
  4.                         $_SESSION["token"] = md5(uniqid(mt_rand(), true));
  5.                         $usuario = utf8_decode(mysqli_real_escape_string($conexion, $_POST['usuario']));
  6.                         $password = md5(utf8_decode(mysqli_real_escape_string($conexion, $_POST['password'])));
  7.                         if($usuario == '' or $password == '') {
  8.                             echo '<script>alert("Porfavor, rellene los campos en blanco")</script>';
  9.                         }
  10.                         else {
  11.                             $comprobar = mysqli_query($conexion, 'SELECT * FROM usuarios WHERE usuario = "' . $usuario . '" AND password = "' . $password . '"')or die(mysqli_error($conexion));
  12.                             if(mysqli_num_rows($comprobar) == 1) {
  13.                                 $row = mysqli_fetch_assoc($comprobar);
  14.                                 $_SESSION['id'] = $row['id'];
  15.                                 $_SESSION['usuario'] = $row['usuario'];
  16.                                 $_SESSION['nombre'] = $row['nombre'];
  17.                                 $_SESSION['apellido'] = $row['apellido'];
  18.                                 $_SESSION['email'] = $row['email'];
  19.                                 $_SESSION['saldo'] = $row['saldo'];
  20.                                 $_SESSION['tipousuario'] = $row['tipousuario'];
  21.                                 $_SESSION['logged'] = TRUE;
  22.                                 echo '<meta http-equiv="refresh" content="0">';
  23.                             }
  24.                             else {
  25.                                 echo '<script>alert("Usuario o contraseña incorrectos")</script>';
  26.                             }
  27.                         }
  28.                     }
  29.             ?>
Y finalmente la parte del panel de usuario, que al estar desloggeado no aparece.

Les dejo un usuario de prueba para que lo vean por su cuenta
Usuario: 9998
Password: asdasd
Web: Shellsur.com

Ojalá alguien pueda ayudarme, me estoy volviendo loco... Desde ya muchas gracias!

EDIT: Acabo de entrar al enlace para deslogearme (teniendo en cuenta que supuestamente no estaba loggeado) http://shellsur.com/salir.php y después de esto intenté iniciar sesión nuevamente, y funcionó! Pero ahora al tratar de desloggearme no lo hace o.O Definitivamente no tengo idea de qué está pasando :/
__________________
WWW.LLORK.COM - El futuro es nuestro
Blog de descargas, tutoriales, guías, noticias y más.

Última edición por SonrisaCs; 10/04/2015 a las 02:59
  #2 (permalink)  
Antiguo 10/04/2015, 11:56
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 7 meses
Puntos: 145
Respuesta: Problema con SESSION

¿Podrías poner el código del salir.php?
__________________
¿Te sirvió la respuesta? Deja un +1
  #3 (permalink)  
Antiguo 10/04/2015, 22:20
 
Fecha de Ingreso: diciembre-2010
Mensajes: 180
Antigüedad: 13 años, 4 meses
Puntos: 5
Respuesta: Problema con SESSION

Cita:
Iniciado por NueveReinas Ver Mensaje
¿Podrías poner el código del salir.php?
Claro,
Código PHP:
Ver original
  1. <?php
  2. echo '<meta http-equiv="refresh" content="0,http://shellsur.com">';
  3. ?>

Gracias por responder!
__________________
WWW.LLORK.COM - El futuro es nuestro
Blog de descargas, tutoriales, guías, noticias y más.
  #4 (permalink)  
Antiguo 10/04/2015, 23:15
Avatar de jose_php  
Fecha de Ingreso: mayo-2014
Mensajes: 44
Antigüedad: 9 años, 11 meses
Puntos: 2
Respuesta: Problema con SESSION

Hola, primero que nada por buenas practicas en la session solamente guarda datos que no va a ser alterados ya que me imagino que tu estas guardando todos esos datos para poder usarlos constantemente y pues algun dia haras un administrador para que edite informacion de x empleado, asi que mi criterio seria que solo guardes el ID y el usuario y la clave.

Bueno por otro lado, para que no vuelva a salir ese formulario de login debes de poner una validacion con las sessiones, si en el caso que no existan pues que muestre el formulario y si estas logueado o la session existe entonces que el formulario no muestre, ejm:

Código PHP:
Ver original
  1. <?php
  2. if(($_SESSION['id'] != '')) && (LOGIN == TRUE){
  3. // Mostrar formulario
  4. } else{
  5. // Ocultador formulario
  6. }
  7. ?>

Seria recomendable que en todos tus modulos pongas estas condiciones de session, para que no tengas problemas, claro en caso no lo hayas hecho, pero tambien seria mejor que usas funciones u objetos netamente.

Ahora para que veas si la session caduca o no has hecho las condiciones de session y logueo correctas pon esto:

Código PHP:
Ver original
  1. <?php
  2. var_dump($_SESSION);
  3. ?>

Avisame cualquier cosa, estoy para ayudarte.
  #5 (permalink)  
Antiguo 13/04/2015, 10:21
 
Fecha de Ingreso: diciembre-2010
Mensajes: 180
Antigüedad: 13 años, 4 meses
Puntos: 5
Respuesta: Problema con SESSION

Hola José, muchas gracias por responder, voy a tener en cuenta lo de guardar sólo los datos que no se alteran en la sesión, por otro lado, utilicé el código que me brindaste para ocultar/mostrar contenido de acuerdo a si la sesión está creada o no, pero le tuve que quitar los paréntesis que había en las condiciones o no funcionaba

if(($_SESSION['id'] != '') && ($_SESSION['logged'] == TRUE)) {

Sé que debería aprender a php orientado a objetos, pero eso ahora mismo no es algo que pueda solucionarme el problema, ya que tendría que hacer todo el script de nuevo y me llevaría mucho tiempo :/

Ahora sigue sin funcionar, y "var_dump($_SESSION);" me arroja
array(0) { }

Cuando no está loggeado, cuando me loggeo me arroja los valores correspondientes, pero al "cerrar sesión" la sesión no se cierra y queda la variable cargada normalmente :/ Qué puede ser que no cierre la sesión?
__________________
WWW.LLORK.COM - El futuro es nuestro
Blog de descargas, tutoriales, guías, noticias y más.
  #6 (permalink)  
Antiguo 13/04/2015, 10:25
 
Fecha de Ingreso: abril-2013
Ubicación: Envigado
Mensajes: 18
Antigüedad: 11 años
Puntos: 3
Respuesta: Problema con SESSION

Hola, estamos hablando de un ambiente local (tu pc) o esto sucede en una red de servidores?
  #7 (permalink)  
Antiguo 13/04/2015, 10:41
 
Fecha de Ingreso: diciembre-2010
Mensajes: 180
Antigüedad: 13 años, 4 meses
Puntos: 5
Respuesta: Problema con SESSION

Cita:
Iniciado por carlostitoi Ver Mensaje
Hola, estamos hablando de un ambiente local (tu pc) o esto sucede en una red de servidores?
Hola! No es local, es en un servidor, en local funciona genial, justo estaba haciendo un edit y veo tu respuesta (Primero que nada gracias por responder)

Acabo de cambiar los permisos chmod de los archivos index.php y salir.php y resulta que ahora funciona, pero al cerrar sesión (salir.php) cuando vuelve a redireccionarme al index, la sesión se muestra abierta, y al recargar la página ya sí aparece cerrada, es como si no refrescara, será tema de caché?
__________________
WWW.LLORK.COM - El futuro es nuestro
Blog de descargas, tutoriales, guías, noticias y más.
  #8 (permalink)  
Antiguo 14/04/2015, 04:03
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 7 meses
Puntos: 145
Respuesta: Problema con SESSION

Cita:
Iniciado por SonrisaCs Ver Mensaje
[...] pero al cerrar sesión (salir.php) cuando vuelve a redireccionarme al index, la sesión se muestra abierta, y al recargar la página ya sí aparece cerrada, es como si no refrescara, será tema de caché?
El problema quizá sea que no 'falseas' la sesión al salir.

Prueba con esto:

Código PHP:
Ver original
  1. <?php
  2. $_SESSION['logged'] = FALSE;
  3. echo '<meta http-equiv="refresh" content="0,http://shellsur.com">';
  4. ?>

Saludos.
__________________
¿Te sirvió la respuesta? Deja un +1
  #9 (permalink)  
Antiguo 14/04/2015, 22:32
 
Fecha de Ingreso: diciembre-2010
Mensajes: 180
Antigüedad: 13 años, 4 meses
Puntos: 5
Respuesta: Problema con SESSION

Cita:
Iniciado por NueveReinas Ver Mensaje
El problema quizá sea que no 'falseas' la sesión al salir.

Prueba con esto:

Código PHP:
Ver original
  1. <?php
  2. $_SESSION['logged'] = FALSE;
  3. echo '<meta http-equiv="refresh" content="0,http://shellsur.com">';
  4. ?>

Saludos.
Hola! Gracias por responder, por desgracia esto no funcionó, intenté agregar abajo (por las dudas)
Código PHP:
Ver original
  1. $_SESSION['id'] = '';

Pero tampoco funciona...
De todas maneras al menos recargando la página cerra correctamente la sesión, pero ya me volvió loco esa web
__________________
WWW.LLORK.COM - El futuro es nuestro
Blog de descargas, tutoriales, guías, noticias y más.

Etiquetas: formulario, mysql, select, session, sql, usuarios
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 00:48.