Newsgroup: it.comp.www.php
Titolo: header(WWW-Authenticate:......)

Salve, non ho capito molto dal manuale e vorrei sapere dove sta il problema.
Server intranet con apache, mysql, php:
Devo accedere ad un area riservata e vorrei utilizzare
"header('WWW-Authenticate: Basic realm="Sistema di Autenticazione"');"
Se inserisco l'esempio del manuale non ho nessun problema e funziona tutto
regolare, xň non si adatta alla mia situazione in quanto ho piů di uno user
e password che entrano in sessione a seconda dell'accesso.
Ho apportato una modifica non sostanziale al codice ed ho tirato fuori il
seguente:
<?php
session_start();
if(!isset($PHP_AUTH_USER)) {
    Header("WWW-Authenticate: Basic realm=\"Zona protetta\"");
    Header("HTTP/1.0 401 Unauthorized");
    echo "Impossibile eseguire l'autorizzazione\n";
    exit;
    }
else {
    if (($PHP_AUTH_USER == "valore che prendo dal db") && ($PHP_AUTH_PW ==
"valore che prendo dal db")) {
          $_SESSION["accesso"] = $PHP_AUTH_USER;
          header("Location: miapagina.php?PHPSESSID=".$PHPSESSID);
          exit;
        }
    else {
        echo "Autorizzazione fallita.";
        }
    }
?>
Come mai alla pagina di redirect dopo l'autenticazione non viene
riconosciuta la sessione?
Se metto al posto dell'"header(Location..." la riga
if(isset($_SESSION["accesso"])){
   print $_SESSION["accesso"];
    }
vedo che la sessione č settata e all'interno č scritto correttamente la
$PHP_AUTH_USER.
Perchč non viene settata la sessione? Nella pagina successiva la sessione
"accesso" č vuota.
Grazie
F43

 "header('WWW-Authenticate: Basic realm="Sistema di Autenticazione"');"
Per gestire l'autenticazione puoi anche utilizzare il metodo .htaccess.
Nella doc di Apache trovi tutti i dettagli.
Comunque funziona circa così.
Nella directory che vuoi proteggere metti un file .htaccess contenente, tra
le altre cose, i nomi degli utenti autorizzati. Poi crei un file .htpasswd
contenente tutte le password.
In questo modo quando carichi una pagina situata all'interno della directory
o sottodirectory, ti viene richiesto il login dal browser.
Una volta passato il login, puoi fare i controlli da db come già hai fatto.
Se usi mysql, esiste anche un sistema di autenticazione integrato in cui
apache si collega direttamente al db per verificare che il login sia
corretto.
Non l'ho mai usato, ma so che esiste. Si chiama mod_auth_dbm o simile.
Ciao
Marco

 ha scritto nel messaggio
news:bmp07s$dvo$1...@news2.isdnet.net...


 fornisce altro.............
Se c'č Apache sě.
Win98 fa veramente ..rda come server...
Ciao
Marco

...è settata a zero solo la variabile 'accesso' o anche tutto il contenuto
della sessione?
   (se hai inserito altre variabili...)
...se è cosi puo darsi che in miapagina.php hai dimenticato di aprire la
sessione
  con session_start()!
Simone

 ha scritto nel messaggio
news:bmp2qp$pfjdd$1...@ID-209510.news.uni-berlin.de...


ma il problema risiede solo con questo script, o non sei mai riuscito a
creare una sessione,
e quindi leggere medesime variabile in pagine differenti?
...cmq   la cartella dove dovrebbe risiedere il file di sessione è per
default, almeno
in ambienti windows :C:\PHP\sessiondata, (se non l'hai cambiata dal
php.ini),
la cartella /tmp contiene i file in upload dal client!
Simone

 ha scritto nel messaggio
news:bmp86n$pk5q5$1...@ID-209510.news.uni-berlin.de...


 ha scritto nel messaggio
news:bmp2a8$17pl$1...@news5.isdnet.net...


rileggendo il tuo file ho notato una cosa che io generalmente non faccio per
scrivere nelle sessioni:
$_SESSION["accesso"] = $PHP_AUTH_USER;
io avrei scritto:
...
$accesso = $PHP_AUTH_USER;
 session_register('accesso');
...
in questo modo nella sessione viene aggiunta la nuova variabile,
come hai fatto tu potrebbe non scrivere (dico potrebbe perche non l'ho mai
provato, ma a rigor di logica non dovrebbe funzionare!) la variabile nella
sessione, ma cmq giustificare:
if(isset($_SESSION["accesso"])){
   print $_SESSION["accesso"];
    }
inquanto prima avevi assegnato un valore a $_SESSION["accesso"].
Simone

 ha scritto nel messaggio
news:bmpnl0$p8mk4$1...@ID-209510.news.uni-berlin.de...


 un SID che però non trovo.
fammi sapere...
..mi sto incuriosendo e vorrei capire perche non ti funziona...
magari c'e da vedere meglio le direttive sulle sessioni in php.ini...
Simone

 ha scritto nel messaggio
news:bmr92l$q48o9$1...@ID-209510.news.uni-berlin.de...


 soluzione.
...che sistema operativo usi con apache?
...potrebbe anche essere un problema che nasce dall'invio di determiati
  header differenti al client...
sul server di aruba c'erano malfunzionamenti se si inviava
un cookie subito dopo aver inviato un'intestazione di reindirizzamento al
browser...
il cookie non veniva creato!
...ed aruba diceva che era un problema del php4 su IIS...
vorrei provare a testare questi script da me, se vuoi!
puoi mandarmeli via mail
Simone

...come hai settato la direttiva session.use_trans_sid nel php.ini?
...fammi sapere!
Simone

 ha scritto nel messaggio
news:bn11k0$rqh7v$1...@ID-209510.news.uni-berlin.de...


 ha scritto nel messaggio
news:bn12pk$rh23k$1...@ID-209510.news.uni-berlin.de...


 ha scritto nel messaggio
news:bn12pk$rh23k$1...@ID-209510.news.uni-berlin.de...


...nel tuo script c'e' un'errore grave!
immagino che non sia quello che usi ma un'altro che hai ricopiato
velocemente,
e dove hai tralasciato appunto l'errore, altrimenti non si spiega come mai
finora l'uso delle sessioni non ti ha creato problemi!
cmq....
le variabili nel PHP sono case-sensitive,
l'array $_session non è lo stesso di $_SESSION!
...quindi è per questo che nella sessione non scrive nulla!
un'altra cosa,
hai settato, nel php.ini, la direttiva  error_reporting ad  E_ALL durante la
fase di testing?
è molto utile!
perche un errore come quello di sopra lo scopri subito!
un'altra cosa...
per questioni di sicurezza conviene settare ad off, register_globals (sempre
in php.ini)...
in questo caso bisogna usare $_SESSION[] al posto di session_register() per
impostare le variabili...(l'ho scoperto ora) ed usare
$_REQUEST['PHPSESSID']al posto di PHPSESSID;...
spero che il tuo problema risieda in questo errore..fammi sapere!
cmq il tuo script l'ho, ovviamente, provato e funziona!
Simone

 ha scritto nel messaggio
news:bn1h6m$s3ti3$1...@ID-209510.news.uni-berlin.de...



ho provato prima sto script correggendo le $_SESSION...
if ($privilegio == "admin"){
    $_session["privilegio"] = $privilegio;
    header("location: admin.php?PHPSESSID=".$PHPSESSID);
    }
else{
    $_session["privilegio"] = $privilegio;
    header("location: user.php?PHPSESSID=".$PHPSESSID);
    }
ed mi funiona...ossia qnd mi reindirizza su, per es.;, admin.php,
lka variabile 'privilegio' c'e'  l'ho nella sessione..
pero ho pensato di utilizzare lo script inserendo
la funzione header() per eseguire un'autenticazione e verificare il tutto...
ma con mia meraviglia scopro che l'autenticazione non modifica le variabili
PHP_AUTH_USER etc..per cui mi autentico all'infinito...
in quanto risulta sempre vera !isset($PHP_AUTH_USER)....
qnd c'e qualcosa che non va nella mia cong di php&apache...
anche se tempo fa funzionava a meraviglia!
sto impazzendo...ci sto cmq studiando sopra...
spero di trovare la soluzione al piu presto...
fammi sapere cmq se hai risolto!
Simone

 ha scritto nel messaggio
news:bn33pp$sg3c8$1...@ID-209510.news.uni-berlin.de...


"gioppino" <fabryNOS...@superLeva.it> ha scritto nel messaggio
news:6xbnb.361717$R32.11...@news2.tin.it...

ho letto, purtroppo  in questi giorni non ho avuto , e non ho tempo,
per ragionarci su....
seguirò cmq le tue vicende sulle news!
in bocca a lupo!
Simone