HTTP_REFERER e area riservata..

robysdc

Nuovo Utente
15 Nov 2008
21
0
0
Ciao a tutti

visto il grande aiuto che ogni volta sapete darmi vi posto un'altra mia richiesta:

ho predisposto un'area ad accesso riservato che utilizza i cookie fatta più o meno così:

Preparo il modulo per l'accesso all'area riservata.

modulo di login.htm
-----------------
PHP:
 <form method="POST" action="redirect.php">
Password <input type="password" name="password">
<input type="submit" value="Login">
</form>

Verifico i dati passati dal modulo e se ok setto un cookie le computer dell'utente con il nome TEST e gli assegno il valore "ok" e scadenza a 1 anno dalla data di oggi.

redirect.php
------------------
PHP:
 <?php
// verifico username e password e se ok...
$password = $_POST["password"];
if ($password <> 'pizza87') {
echo "Non sei autorizzato ad entrare in quest'area";
} else {
setcookie("TEST", "ok", time() + 60 *15);
header("Location: [url]http://miosito.org/welcome.php[/url]");
}
?>
Recupero il cookie precedentemente memorizzato nel computer dell'utente e controllo che sia presente ossia se il browser dell'utemte accetta i cookie oppure no.

welcome.php
-----------------

PHP:
 <?php
if (!isset($_COOKIE["TEST"])) { 
 echo "Non accetti i cookie. Per entrare devi abilitare il browser ad accettare i cookie"; 
} else { 
echo "Mostro la pagina di ingresso";
} 
?>
così tutto pare funzionare, l'unica cosa che non mi piace è che se un utente "malintenzionato" digita direttamente il link alla pagina protetta welcome.php il programmino non lo lascia entrare (dato che nn trova i cookie) ma gli risponde " "Non accetti i cookie. Per entrare devi abilitare il browser ad accettare i cookie".

in questi casi preferirei mostrare il messaggio "non sei autorizzato ad entrare in questa area"..

Per farlo ho inserito allora in welcome.php una verifica della pagina di proveninza:
se si proviene da login.php va tutto bene altrimenti non si entra ricevendo il messaggio: "non sei autorizzato ad entrare in questa area".

il codice sarebbe questo:

PHP:
 <?php
$provenienza = $_SERVER["HTTP_REFERER"];
if ($provenienza ==  "http://miosito.org//login.php")  {

if (!isset($_COOKIE["TEST"])) { 
 echo "Non accetti i cookie. Per entrare devi abilitare il browser ad accettare i cookie"; 
} else { 
echoo "Mostro la pagina di ingresso"; } 

}

else {
echo "<div align='center'>Non sei autorizzato ad entrare in quest'area</div><br>
<div align='center'>Torna alla pagina di <a href=login.php>login</a></div>";
}
?>
Così facendo però se un navigatore, effettua l'accesso, visita la pagina protetta e poi esce e rientra passando da un'altra pagina del mio sito diversa da LOGIN.php non può più entrare anche se il cookie è ancora valido..

Insomma..

è possibile settare

PHP:
$provenienza = $_SERVER["HTTP_REFERER"];
if ($provenienza ==  "http://miosito.org/Php/Guild/login.php")
modificando la condizione if in modo che riconosca la provenienza da una QUALUNQUE delle pagine del mio sito e NON SOLTANTO DA UNA singola pagina??

Grazie mille a tutti per la pazienza...
 
Ultima modifica:

lotus

Utente Attivo
5 Mag 2009
543
8
0
Forse sarà un approccio brutale ma hai pensato a provare a testare che la stringa di provenienza contenga solo "http://miosito.org/" senza verificare esattamente l'url??

Cioè se l'indirizzo di provenienza contiene l'host del tuo sito allora...


Dimmi se è ok.

Ciro