Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/11/2014, 14:12
DandyCC
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 11 años, 9 meses
Puntos: 1
Problema login usuario con cookies

Buenas. Realmente no es un problema con el login, pero no sé exactamente cómo llamarlo.

Estoy implementando la opción de login con cookies para mi página. El sistema funciona, pero hay un pequeño error que no logro identificar.

Al principio de cualquier página tengo esto:

Código PHP:
Ver original
  1. if (isset($_SESSION["usuario"])) {
  2.     if ($_SESSION['session_id'] != md5(session_id())) {
  3.         $user_loggued = false;
  4.     }
  5.     else {
  6.         $usuario = unserialize($_SESSION["usuario"]);
  7.         $user_loggued = true;
  8.     }
  9. }
  10. else {
  11.     $user_loggued = checkCookiesUsuario();
  12. }

checkCookiesUsuario es una función que hice yo para comprobar si están las cookies de registro en el navegador del usuario. Es esta

Código PHP:
Ver original
  1. function checkCookiesUsuario () {
  2.         if (isset($_COOKIE["iduser"]) && isset($_COOKIE["random"])) {
  3.             if (checkCookie ($_COOKIE["iduser"], $_COOKIE["random"])) {
  4.                 // Si usuario está memorizado en cookies, lo inicializamos
  5.                 $usuario = new Usuario ();
  6.                 if (!$usuario->inicializar($_COOKIE["iduser"])) {
  7.                     return false;
  8.                 }
  9.                
  10.                 $_SESSION["session_id"] = md5(session_id());
  11.                
  12.                 // El objeto usuario como variable de sesión
  13.                 $_SESSION["usuario"] = serialize($usuario);
  14.                
  15.                 return true;
  16.             }
  17.             else {
  18.                 return false;
  19.             }
  20.         }
  21.         else {
  22.             return false;
  23.         }
  24.     }

El segundo if de esa función es otra función propia que comprueba en la BD si la cookie $_COOKIE["iduser"] se corresponde con $_COOKIE["random"], que es una número random almacenado cuando el usuario se logueó.

Todo este sistema no sé si es el mejor posible, pero funciona bien.

El problema viene cuando lo pongo en práctica. El primer fragmento de código que he puesto funciona y checkCookiesUsuario() retorna true, pero en la página toda la información relacionada con el usuario no aparece (nombre, apellidos, fotos...). Como no aparecía añadí esto para ver si se creaba bien la variable de sesión:

Código PHP:
Ver original
  1. var_dump($user_loggued);
  2. echo "<pre>";
  3. print_r($_SESSION["usuario"]);
  4. echo "</pre>";

Y para mi sorpresa, $user_loggued es true, la variable de sesión se crea perfectamente bien y ya aparecen todos los datos del usuario en la página. Sin embargo, si elimino esas líneas de código vuelvo al punto de partida, donde ningún datos del usuario se muestra.

¿Alguien sabe qué podría estar pasando?

Gracias!