2013-07-08 10 views
5

La mia app Web PHP ha attualmente il dominio del cookie di sessione impostato su example.com. Mi piacerebbe cambiarlo in .example.com. Per i nuovi visitatori, ini_set('session.cookie_domain', '.example.com') funziona. Per i visitatori che hanno già il cookie PHPSESSID prima che venga apportata questa modifica, il dominio rimane al vecchio valore. Come posso cambiare il dominio sul cookie di sessione senza chiedere agli utenti attuali di cancellare i loro cookie?Come modificare il dominio dei cookie di sessione per gli utenti esistenti

  • Non riesco a utilizzare JavaScript per aggiornare il cookie perché è HTTPOnly per motivi di sicurezza.
  • L'eliminazione delle sessioni sul server non reimposta l'intero cookie, ma aggiorna solo il valore del cookie (mantenendo lo stesso dominio).
  • I browser moderni mantengono la sessione attraverso i riavvii, quindi, anche se il cookie è impostato per scadere al termine della sessione del browser, la sessione del browser non ha mai una durata effettiva.

L'unica possibilità che posso venire è impostare il cookie scadere in passato e quindi reindirizzare per ottenere un nuovo cookie. Ma non posso sapere quali visitatori hanno impostato erroneamente il dominio dei cookie.

+0

Quanto sarebbe male se si passasse semplicemente al server sul nuovo cookie, che disconnetteva gli utenti "vecchi"? –

+0

Se si puliscono tutte le sessioni sul server, le persone vengono disconnesse e gli aggiornamenti del valore del cookie, mentre gli altri parametri dei cookie rimangono invariati poiché il cookie non è stato eliminato sul client. –

+0

beh, a meno che non abbia impostato una durata eccessivamente lunga del cookie, alla fine i browser scadranno il vecchio cookie. –

risposta

3

Impostare un nuovo session_name() prima di iniziare la sessione. In questo modo il nome del cookie cambia e qualsiasi vecchio cookie verrà ignorato. Solo i nuovi cookie verranno inviati e funzioneranno per la sessione.

+0

Brillante! Lavori! Non posso credere di non aver pensato a questo ... –

Problemi correlati