Newsgroup: it.comp.lang.perl
Titolo: REMOTE_USER

Ho protetto una directory attraverso l'uso di .htaccess, ogni volta che
si entra nella directory appare la finestrella di dialogo che richiede
il nome e la password. Inserendole si accede alla directory. Fin qui
tutto bene.
Il nome utente, in ambiente Apache, dovrebbe essere memorizzato in una
variabile chiamata REMOTE_USER. Una successiva chiamata a questa
variabile mi mostra che essa è vuota. Da notare che ho provato a
chiamarla sia direttamente da html che da script Perl, quest'ultimo
particolarmente importante perchè mi serve per cercare l'ID
corrispondente all'utente in una tabella MySQL.
I tecnici del server dove ho lo spazio web, brancolano nel buio. Da
notare che si tratta di un'ottimo server (
www.gisol.com
).
Qualcuno ha avuto un'esperienza analoga? Magari sa anche dove cercare
la soluzione? 
Cordiali saluti 
Oreste

 variabile mi mostra che essa è vuota.
Come vi accedi? Perl si interfaccia a queste metavariabili mediante 
l'hash %ENV, per cui per reperire il valore che stai cercando, devi 
utilizzare:
$ENV{'REMOTE_USER'}
Detto questo, sarebbe ancora meglio utilizzare il modulo CGI, che 
restituisce il valore in oggetto mediante il metodo remote_user()
Se hai un po' di tempo dai un'occhiata a:
http://users.easystreet.com/ovid/cgi_course/
Ciao,
Emanuele.

Caro Emanuele,
ti ringrazio.
Accedo alla variabile, meglio dire, ci provo, sia da html che da script
Perl. Quest'ultimo chiama la variabile in due modi (vedi script alla
fine del messaggio).
Da notare che le altre variabili (remote_addr e remote_host)
restituiscono dei valori corretti.
Sospetto che il provider abbia soppresso la variabile per qualche
oscuro motivo.
Ciao
Oreste
my $q=CGI->new();
print $q->header,
    $q->start_html(-title=>'remote_user',
				   -author=>'oreste',
				   -meta=>{'keywords'=>'prova perl','copyright'=>' 2006 oreste'},
				   -text=>'yellow',
				   -bgcolor=>'black'
				  ),
    $q->h1('Variabili CGI'),
	$q->p(''),
	$q->p('Scritte attraverso le macro $q->p(abcABC)'),
	$q->p(''),
	$q->p('remote_user = ' . $q->remote_user()),
	$q->p('ENV{REMOTE_USER} ='. $ENV{'REMOTE_USER'}),
	$q->p(''),
	$q->p(''),
	$q->p('remote_addr = ' . $q->remote_addr()),
	$q->p('remote_host = ' . $q->remote_host()),
 	$q->p('user_agent = ' . $q->user_agent()),
 	$q->p('referer = ' . $q->referer()),
 	$q->p('script_name = ' . $q->script_name()),
 	$q->p('user_name = ' . $q->user_name()),
    $q->end_html();

 oscuro motivo.
Mi sembra estremamente improbabile, in quanto non ne vedo la ragione (ma 
nella vita tutto puň essere).
Il tuo script, che ho testato per scrupolo (su Apache 2.0.55 + 
ActivePerl 5.8.8.817 + WinXP), funziona alla perfezione, per cui l'unica 
cosa che mi viene in mente č che hai protetto un'altra pagina, dalla 
quale passi poi allo script cgi (che risiede in un'altra directory) 
tramite un link o una form.
Se cosě fosse, accadrebbe proprio quello che hai descritto (in quanto č 
necessario proteggere proprio lo script).
Se invece la situazione non č questa, allora non mi vengono in mente 
spiegazioni ragionevoli.
Ciao,
Emanuele.

Caro Emanuele,
hai centrato nel segno, infatti lo script si trovava nella directory
cgi-bin mentre la pagina protetta, che richiama lo script, in un'altra
directory protetta.
Ho spostato lo script nella directory protetta ed ha funzionato.
Ti ringrazio infinitamente.
Ciao
Oreste