[gl-como] problema con PHP

Pietro Bertera pietro@bertera.it
Ven 16 Lug 2004 12:09:32 CEST


Il ven, 2004-07-16 alle 11:52, Riccardo - SCASI ha scritto:
> ciao a tutti,
> forse e' OT ma volevo sottoporvi un problema che mi affligge con le sessioni
> PHP.
> Premessa, la mia esperienza con la programmazione in PHP (e web in generale
> e' minima).
> Ho scritto una pagina per il login che utilizza le sessioni e ottengo i
> seguenti diversi comportamenti:
> 
> 1) con Internet Explorer:
> 1.a) effettuo il login, posso accedere all'area riservata.
> 1.b) chiudo il browser (o apro un'altro IE), mi ricollego e devo ancora
> effettuare il login per accedere all'area riservata (comportamento
> desiderato).
> 
> 2) con Mozilla/Firefox:
> 2.a) effettuo il login, posso accedere all'area riservata. OK
> 2.b) chiudo il browser (o apro un'altro finestra/tab), mi ricollego e non e'
> necessario che io effettui il login per accedere all'area riservata, mi
> mantiene la sessione aperta anche chiudendo il browser. Per chiudere la
> sessione devo esplicitamente fare il logout (non voglio che questo succeda).

lo stato delle session HTTP lo si traccia trascinandosi una variabile
(appunto "di sessione") per tutta la navigazione. ci sono 3 modi per
farlo:
1) settare un cookie
2) usare URL rewriting
3) usare POST

con il cookie la cosa è trasparente all'utente e si ha il (s)vantaggio
di fare durare la ssessione per il tempo di vita del cookie (nota che il
cookie puo' anche morire appena si chiude il browser).

con URL rewiting si aggiunge una variabile in GET ad ogni url quindi
avrai dei link del tipo "index.php?PHPSESSID=blablabalblabla..."

con POST vengono aggiunti degli hidden field nei form:
<input type="hidden" name="PHPSESSID" value="dskjhcpoiewuhclwekj">

PHP gestsce le sessioni automaticamente quindi usa un mix dei tre
metodi. La scelta del modo da usare la fa principalmente in base al
browser che stai usando: se supporta i cookie di mette il biscotto
altrimenti usa modi alternativi.

la direttiva in php.ini per impostare il tempo di vita di un cookie è
session.cookie_lifetime (di default è 0 ovvero finchè è aperto il
browser).

Quindi controlla prima se IE ha abilitato i cookies se si controlla
anche il tempo di vita impostato in php.ini al limite puoi usare la
ini_set()

Ciao

--
Bertera Pietro
http://www.bertera.it
http://www.makkia.net




Maggiori informazioni sulla lista gl-como