Come funzionano le sessioni PHP quando i cookie sono disabilitati?

Ho provato a ricercare questo meccanismo, ma ho trovato solo suggerimenti e questi non sono molto coerenti. Come viene inviata la session _id al browser e in che modo viene richiesto al browser di restituirlo quando l'utente richiede una nuova pagina?

Grazie, Chris

PHP farà 2 cose:

  • Riscriverà tutti i link per passare un parametro GET aggiuntivo, solitamente PHPSESSID, ma può essere modificato impostando session.name in php.ini
  • Aggiungerà un input nascosto con lo stesso nome dopo tutti i tag di apertura <form> .

Nota che questa è una cosa pericolosa da fare, perché chiunque tu copi e incolli un URL per contenere un parametro PHPSESSID sarà in grado di condividere la tua session di accesso sul sito – il server web non ha un modo semplice per dire che sei diverso da la persona a cui hai inviato il link per …

Il module di session di PHP support il recupero dell'ID di session dai dati GET e POST (oltre ai cookie). Puoi usare http://uk.php.net/manual/en/session.configuration.php#ini.session.use-trans-sid e http://uk.php.net/manual/en/session.configuration .php # ini.url-rewriter.tags per consentire a php di gestire l'inoltro dell'ID. In each caso, tieni presente che, soprattutto se utilizzi GET per trasportre l'id, è più probabile che alcuni utenti abbandonino per sbaglio il loro ID di session (valido).

Il meccanismo sottostante non interessa come l'ID della session è stato trasportto dal client al server. Finché si passa il valore "giusto" a session_id () functionrà – anche se si fa qualcosa di strano (stupido?) Come abuso dell'etag-header come veicolo per l'id della session 😉

Le sessioni funzionano creando un ID univoco (UID) per each visitatore e memorizza le variables in base a questo UID. L'UID è (1) memorizzato in un cookie o (2) è propagato nell'URL.