Vorrei sapere se esiste un modo per impedire a PHP di inviare un cookie quando chiama session_start()
.Impedisci a php session_start() di inviare un cookie
mio caso d'uso è per un'ottimizzazione del sito:
- (1a) in primo luogo ho aprire una sessione/inviare le intestazioni.
- (1b) Quindi genera ed emette del contenuto di testo.
- (1c) Per migliorare la lettura/scrittura della sessione, chiamo "session_write_close" non appena non avrò più bisogno di scrivere nella sessione.
- (2) Finalmente ho un processo di rendering post-page (per le statistiche) che richiede un accesso in scrittura alla sessione. La sessione è chiusa, non posso richiamare session_start() di nuovo poiché invia un cookie ed è troppo tardi per quello. Questo è un processo molto complicato, quindi devo farlo dopo che la pagina è stata inviata al client.
Il client ha già ricevuto un cookie di sessione. Quindi non ho bisogno di session_start()
per inviare una nuova (e ridondante).
Qualcuno conosce un modo per intercettare il cookie o qualcosa di simile? Ovviamente voglio evitare "Impossibile inviare cookie di sessione - intestazioni già inviate". Questo errore è invisibile per l'utente perché la pagina è già sottoposta a rendering ma risulta sgradevole nei registri.
La mia domanda sembra essere ridondante, ma non lo è. So come funzionano le intestazioni e i contenuti (invia prima le intestazioni, i contenuti dopo). È solo che PHP non mi lascia fare quello che voglio.
Grande, la prima soluzione funziona 'ini_set ('session.use_cookies', 0)'. La seconda soluzione non sembra avere alcun effetto (l'ho già provata ieri in realtà) ma può essere relativa alla mia configurazione di php. Passerò più tempo più tardi su questa seconda soluzione. Grazie ! – Mat
Ho eseguito alcuni test con '$ _COOKIE'. Funziona in realtà ma sarebbe come usare 'ini_set();' e con 'ini_set()' è più chiaro cosa faccia. Aggiungerò uno script alla risposta che ho usato per giocare, un codice su '$ _COOKIE' è commentato. Decommentalo per generare un nuovo ID di sessione per la prima sessione. Questo mostra anche come '$ _COOKIE' è correlato a' session_start() '. – hakre
'ini_set ('session.use_cookies', '0');' funziona perfettamente per l'intestazione del cookie, ma non per l'intestazione della cache che farà scadere il cookie SID. Vedere la risposta di @techdude per usare 'session_start (['use_cookies' => '0', 'cache_limiter' => '']);' – Code4R7