Me gustaría saber si existe alguna forma de evitar que PHP envíe una cookie al llamar al session_start()
.Prevenir php session_start() para enviar una cookie
Mi caso de uso es para una optimización del sitio:
- (1a) La primera vez que abra una sesión/enviar cabeceras.
- (1b) A continuación, genere y envíe contenido de texto.
- (1c) Para mejorar la lectura/escritura de sesión, llamo "session_write_close" tan pronto como ya no necesito escribir en la sesión.
- (2) Finalmente tengo un proceso de representación posterior a la página (para estadísticas) que requiere un acceso de escritura a la sesión. La sesión está cerrada, no puedo volver a llamar a session_start() ya que envía una cookie y es demasiado tarde para eso. Este es un proceso de cómputo pesado, así que tengo que hacerlo después de que la página se envíe al cliente.
El cliente ya recibió una cookie de sesión. Así que no necesito session_start()
para enviar una nueva (y redundante).
¿Alguien sabe una forma de interceptar la cookie o algo similar? Por supuesto, quiero evitar el mensaje "No se puede enviar la cookie de sesión: los encabezados ya enviados". Este error es invisible para el usuario porque la página ya está renderizada, pero se ve fea en los registros.
Mi pregunta parece ser redundante, pero no lo es. Sé cómo funcionan los encabezados y el contenido (enviar encabezados primero, contenido después). Es solo que PHP no me deja hacer lo que quiero.
Grande, la primera solución funciona 'ini_set ('session.use_cookies', 0)'. La segunda solución no parece tener ningún efecto (ya lo intenté ayer en realidad) pero puede ser relativa a mi configuración de php. Pasaré más tiempo más tarde en esta segunda solución. Gracias ! – Mat
Realicé algunas pruebas con '$ _COOKIE'. En realidad funciona, pero esto sería lo mismo que usar 'ini_set();' y con 'ini_set()' es más claro lo que hace. Añadiré un script a la respuesta que usé para jugar, se comenta un código sobre '$ _COOKIE'. Descoméntelo para generar una nueva identificación de sesión para la primera sesión. Esto también muestra cómo '$ _COOKIE' está relacionado con' session_start() '. – hakre
El 'ini_set ('session.use_cookies', '0');' funciona perfectamente para el encabezado de la cookie, pero no para el encabezado del caché que expirará la cookie SID. Ver la respuesta de @techdude para usar 'session_start (['use_cookies' => '0', 'cache_limiter' => '']];' – Code4R7