[Tech] Re: Variabili d'ambiente in PERL (fwd)
Franco Bagnoli
franco.bagnoli@unifi.it
Mer 12 Mar 2003 16:20:42 CET
Cari Amici, vi passo questo messaggio di risposta che mi è stato mandato
personalmente perché, dayto che questa mailing list viene ai primi posti
di google, magari ci sono altre persone con gli stessi problemi. A quando
una flugfaq?
> Io sto creando 1 sito web utilizzando il PERL per la generazione di pagine HTML
> dinamiche.
> Ho necessità che la prima pagina (quella di login) memorizzi lo UserName come
> variabile
> di sessione, in modo che possa essere letta dalle altre pagine in qualsiasi
> momento.
>
> Ho provato a inserire tale codice nella prima pagina:
> $ENV{'pippo'}='99';
>
> E il seguente codice in tute le pagine a seguire:
> $c=$ENV{'pippo'};
> print $c;
>
> ...purtroppo non viene stampato nulla: $ENV{'pippo'} nelle altre pagine è
> vuoto!!!
sono script cgi o mod_perl? se sono cgi non puoi fare quelo che vuoi
perché ogni script viene eseguito in un processo a se. Se sono mod_perl
puoi teoricamente farlo, ma non sono sicuro che funzioni sui vari processi
lanciati dal server. Inoltre cosa succede se si collegano
contemporaneamente due utenti? che il primo vede cambiare la sua
identità.....
No, devi usare un altro approccio, ovvero memorizzare l'informazione
dell'utente da qualche parte e identificare il cammino dell'utente.
Normalmente si usa un database (per esempio io uso mysql) e all'atto del
login si registra l'ora d'ingresso nel database assegnandogli una id unica
(per esempio un numero progressivo) che diventa la chiave della
sessione. Poi bisogna far sì che questa chiave di sessione venga
comunicata ad ogni richiesta da parte di quell'utente. Puoi scegliere tra
usare cookie o meterlo in un campo nascosto o metterla nella url.
Per i campi nascosti la soluzione è facile, ma devi ricordarti di mettere
il campo in ogni pagina. Se le pagine sono generate usando un template
(consiglio www.tt2.org) puoi metterlo nella cornice.
Gli altri due sistemi sono interessanti perché puoi intercettare
l'autenticazione a livello di handler di apache e quindi "autenticare"
qualsiasi pagina senza cambiarla.
Per i cookie esiste il modulo Apache::AuthCookie, però devi
obbligare gli utenti ad accettare i cookie.
Oppure puoi codificare la session key nella url, con lo svantaggio che non
puoi fare bookmark.
Il modulo Apache::AuthCookieURL fa entrambe le cose in maniera
trasparente.
Ciao.
--
Franco Bagnoli (franchino) <franco.bagnoli@unifi.it> (bagnoli@dma.unifi.it)
virtual location: Dipartimento di Energetica "S. Stecco"
real location: Dip. Matematica Applicata "G. Sansone", Universita' Firenze,
Via S. Marta, 3 I-50139 Firenze, Italy. Tel. +39 0554796422, fax: +39 055471787
GPG Key fingerprint = 169D 9EA5 8FD3 7EDA E43A 9830 255F BCEC 0D63 3728
Maggiori informazioni sulla lista
flug-tech