[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