2009-03-05 3 views
18

Ho provato a ricercare questo meccanismo, ma trovo solo suggerimenti e questi non sono molto coerenti. Come viene inviata la sessione _id al browser e in che modo viene richiesto al browser di restituirlo quando l'utente richiede una nuova pagina?Come funzionano le sessioni PHP quando i cookie sono disabilitati?

Grazie, Chris

+0

Vedere anche [La mia comprensione delle sessioni PHP è corretta?] (Http://stackoverflow.com/questions/523703/is-my-understanding-of-php-sessions-correct) – Gumbo

risposta

28

PHP fare 2 cose:

  • Sarà riscrivere tutti i link per passare un parametro GET in più, di solito PHPSESSID ma questo può essere cambiato impostando session.name in php. ini
  • Aggiungerà un input nascosto con lo stesso nome dopo tutti i tag di apertura <form>.

Si noti che questa è una cosa pericolosa da fare, perché chiunque tu ad es. copia/incolla un URL per contenere un parametro PHPSESSID sarà in grado di condividere la sessione di accesso sul sito - il server web non ha modo facile di dire che sei diverso dalla persona a cui hai inviato il link ...

+2

Grazie. È proprio quello che volevo sapere. Sembra ironico che i cookie possano essere disattivati ​​per aumentare la sicurezza sul client, ma questa azione ridurrà la sicurezza sul server. – cjakeman

0

PHP's il proprio modulo di sessione supporta il recupero dell'ID di sessione dai dati GET e POST (oltre ai cookie). È possibile utilizzare 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 ogni caso, tieni presente che, soprattutto se utilizzi GET per trasportare l'id, è più probabile che alcuni utenti abbandonino per sbaglio il loro ID di sessione (valido).

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

0

Sessioni lavora creando un ID univoco (UID) per ogni visitatore e memorizza le variabili in base a questo UID. L'UID è (1) memorizzato in un cookie o (2) è propagato nell'URL.