Hace poco postee sobre un problema con las sesiones, y al final consegui hacerlo funcionar, pero en local.
La cosa esque en local me funciona perfectamente, y en el servidor donde debe de alojarse (propio de mi empresa) no. Por lo tanto, supongo que sera fallo del php.ini, pero nose de que parametro ni nada, os lo comento a ver si sabeis de que puede ser.
Tengo el archivo validarLogin, en el que si el login es correcto hago esto:
Código:
En definitiva, inicio la sesion y le asigno dos variables y guardo en la bd un registro con su paleta y el id de su sesion ( Si ya existia la actualizo para que el que estaba con esas mismas credenciales lo expulse ) y voy a asta.phpsession_cache_limiter(); session_start(); // Para que al cerrar la ventana se termine la sesion session_set_cookie_params(0, "/", $HTTP_SERVER_VARS["HTTP_HOST"], 0); $_SESSION['logeado'] = "si"; $_SESSION['paletta'] = $reg['paletta']; //// Comprobamos si hay otro usuario conectado en la BD con los mismos parametros, y si es asi eliminamos su sesion $sesiones = mysql_query("Select * from sesiones where paletta = ".$reg['paletta']) or die("No es posible consultar la tabla en este momento"); // Sesion actual $id = session_id(); $paletta = $reg['paletta']; // Significa que ya hay un usuario con las mismas credenciales if(mysql_num_rows($sesiones)>0){ mysql_query("UPDATE sesiones SET id_sesion='$id' WHERE paletta=$paletta",$con) or die(mysql_error()); }else{ mysql_query("INSERT INTO sesiones VALUES($paletta,'$id')",$con) or die(mysql_error()); } header("Location: asta.php");
En este asta.php, hago un requiere a un archivo de seguridad con lo siguiente:
Código:
Y aqui es donde me da el error. Me entra en el header con el error=4 siempre, debido a que el id de esta sesion, no coincide con el que he iniciado en validarLogin, almacenado en la BD. No entiendo tampoco, porque si yo le he metido a la sesion de validarLogin un atributo login = "si", me pilla la variable en el seguridad.php siendo las id de la sesiones distintas.... :|session_cache_limiter(); // Inicio la sesión session_start(); // Para que al cerrar la ventana se termine la sesion session_set_cookie_params(0, "/", $_SERVER["HTTP_HOST"], 0); // Comprobamos que el usuario esta logeado if ($_SESSION["logeado"] != "si") { //si no existe, envio a la página de autentificacion header("Location: index.php?error=3"); //ademas salgo de este script exit(); }else{ include('conexion.php'); $paletta = $_SESSION['paletta']; $id = session_id(); $sesion = mysql_query("Select * from sesiones where paletta = $paletta && id_sesion = '$id'",$con) or die ("No se pudo consultar la tabla sesiones"); // Si no existe la sesion en la tabla if(mysql_num_rows($sesion)==0){ header("Location: index.php?error=4"); exit(); } }
La cosa esque en local me funciona perfectamente, el id de la sesion siempre es el mismo, se propaga, pero en el servidor no lo hace, son id de sesiones distintos por lo tanto nunca entra.
Alguna idea de a que es debido?? Saludos y gracias :)