Um, esto puede sonar un poco raro. Estábamos teniendo algunos problemas con un navegador específico bajo una condición muy específica, y finalmente redujimos el problema al hecho de que no estábamos destruyendo correctamente las sesiones anteriores después de hacer session_regenerate_id(). Creo que he resuelto este problema haciendo session_regenerate_id (true) ahora, pero ¿cómo se verifica que las sesiones anteriores ya no existen? Alguien sugirió cURL, pero no puedo encontrar mi camino en torno a sus documentos. Tristemente (?) El jefe no acepta "simplemente funciona" como respuesta, así que realmente agradecería cualquier consejo.cómo verificar que una sesión anterior realmente se destruyó?
Respuesta
Por defecto session_regenerate_id();
única sustituirá a la sesión actual por uno nuevo. Por lo tanto, el archivo de sesión anterior no necesita ser borrado. Pero al hacer un session_regenerate_id(true);
se eliminará el archivo de sesión anterior. (http://php.net/session_regenerate_id)
para comprobar si se elimina sesión antigua se puede hacer algo como esto
<?php
$file=ini_get('session.save_path')."/sess_".session_id();
$gotDeleted = file_exists($file);
?>
También se puede hacer un session_destroy()
. Si debe conservar algunas variables, puede probar unset()
en valores específicos de $_SESSION
.
Sí, es cierto en la mayoría de los casos, pero en algunos casos especiales no va a funcionar. Especialmente cuando usa session_name ("WHATEVERNAMESESSID") en su código. No hay forma de que puedas eliminarlo. La sesión permanece allí para siempre hasta que el navegador (firefox) esté cerca. ¡Muy extraño! – B4NZ41
Para asegurarse de que los datos de la sesión hayan desaparecido, debe ver la sesión que guarda el servidor. De forma predeterminada, almacena sesiones como archivos de disco simple (esta es la razón por la que una sesión sobrevive a un reinicio de apache, por ejemplo). Es posible que desee revisarlos y verificar que el que corresponde a la sesión que estaba observando se haya eliminado efectivamente.
O, si esta es una información tan crítica, es posible que desee construir su propio backend de sesión (que no es difícil en absoluto) para tener aún más control y más opciones de depuración (destruiría manualmente los datos y podría agregar instrucciones de registro para demostrar que los datos se han eliminado).
Ver aquí: http://php.net/manual/en/function.session-set-save-handler.php
- 1. cómo verificar si realmente se actualizan update_all en Rails
- 2. ¿Cómo puedo verificar que mi código multiproceso se esté ejecutando realmente en varios hilos?
- 3. Cómo reanudar la reproducción de video después de que se destruyó la superficie?
- 4. Usuario de correo electrónico que destruyó la compilación en Teamcity
- 5. Cómo verificar que realmente exista una dirección de correo electrónico enviando un correo electrónico a java
- 6. ¿Se puede falsificar una sesión?
- 7. ¿Cómo verificar si una sesión de PHP está vacía?
- 8. cómo verificar el valor anterior en android of viewflipper
- 9. Mockito: cómo verificar que nunca se invocó un simulacro
- 10. ¿Qué causa realmente que se llame a Session_Start?
- 11. ¿Cómo verificar si ya se ha cargado una sesión de rieles?
- 12. ¿Cómo verificar si se abre una figura y cómo cerrarla?
- 13. En UNIX, cómo encontrar usuarios que han iniciado sesión ayer o anterior
- 14. Membresía ASP.NET Control ChangePassword - Necesito verificar la contraseña anterior
- 15. XCode/Simulator: ¿Cómo ejecutar una versión anterior de iOS?
- 16. Verificar el inicio de sesión en cada actividad
- 17. ¿Cómo puedo verificar que se haya llamado exactamente a un método una vez con Moq?
- 18. ¿Cómo puedo verificar que una cadena contiene una fecha?
- 19. Cómo eliminar una imagen anterior cuando se actualiza ImageField?
- 20. Django: redirige a la página anterior después de iniciar sesión
- 21. ¿Cómo verificar que haya una transacción que aún no se haya comprometido en SQL Server 2005?
- 22. Cierre de sesión automático una vez que la sesión caduque
- 23. ¿Cómo volver a la última confirmación después de verificar una confirmación anterior?
- 24. ¿Cómo verificar que NO se invocó ese método en Moq?
- 25. ¿Cómo puedo verificar si este usuario es anónimo o realmente un usuario en mi sistema?
- 26. ¿Cómo verificar las aplicaciones que se ejecutan actualmente en Android?
- 27. ¿Cómo verificar que todas las tareas se hayan completado correctamente?
- 28. cómo verificar si realmente existe una dirección de correo electrónico dada en C#?
- 29. ¿Cómo se implementa realmente la grabadora Wami?
- 30. ¿Cómo puedo verificar que las propiedades que unen los componentes no se "pierdan"?
Parece que la gente de SO tiende a responder preguntas que no entienden. ¿A qué te refieres con "sesión" exactamente? ¿Qué materias importa? ¿Y por qué estás tan seguro de que realmente redujo el problema? –