Tengo problemas con el manejo de sesiones en PHP (versión 5.2.10). Estoy usando las funciones mencionadas a continuación para las sesiones de inicio de sesión, cierre de sesión y validación.Error al destruir la sesión en PHP
login() { session_set_cookie_params(0); session_start(); session_regenerate_id(true); $_SESSION['user_id'] } validate_session() { session_set_cookie_params(0); session_start(); if (isset($_SESSION['user_id']) === FALSE) { session_destroy(); logout(); header("Location: login_page"); } } logout() { session_set_cookie_params(0); session_start(); $_SESSION = array(); setcookie(session_name(), '', time() - 3600, '/'); session_destroy(); }
Cada página primero realiza una llamada a la función validate_session(). Si la sesión no es válida, redirige a la página de inicio de sesión. La función login() se usa para crear la sesión para el usuario. Cuando el usuario hace clic en cerrar sesión, se llama a la función logout() para destruir la sesión.
El problema es: la función de cierre de sesión al azar() lanza la advertencia:
Advertencia: session_destroy(): Objeto de la destrucción sesión fallida
Estoy consiguiendo este aviso con muy poca frecuencia. Como de 20 a 30 llamadas para cerrar sesión, lo recibo una vez. ¿Alguna idea?
Estoy desarrollando en una máquina de Windows XP.
Actualización: las sesiones se almacenan en el sistema de archivos.
Ruta: C: \ WINDOWS \ Temp
Parece que ha pasado un largo tiempo desde que ha aceptado ninguna respuesta en stackoverflow .. –
¡Sí! No he estado muy activo en stackoverflow. Y en algunos casos todavía no tengo una respuesta satisfactoria. – Varun
Hola Varun, ¿Puedes explicar por qué usas el viaje igual en esa comparación? Por lo general, si (! Isset()) fuera suficiente, sé que es más blindado pero isset() solo debería devolver un valor booleano. ¿Realmente necesita validar su tipo? Probablemente no sea probable, pero tal vez eso de vez en cuando vuelva a ser verdad cuando no debería? – picus