2010-08-22 4 views
0

Je souhaite autoriser l'accès à une certaine page uniquement à partir d'une page donnée (où l'utilisateur doit entrer un mot de passe). La saisie directe de l'URL dans le champ URL du navigateur est interdite.
j'ai écrit le code suivant:IE8 et HTTP_REFERER

<?php 
// only allow access through front door 
$from = getenv("HTTP_REFERER"); 
if ($from != "http://www.mysite.net/password.php") 
    include("http://www.mysite.net/secret_nok_tgpxFC6phBRLw1Wh.php"); 
else 
    include("http://www.mysite.net/secret_ok_tgpxFC6phBRLw1Wh.php"); 
?> 

Cela fonctionne bien dans Firefox, mais IE8 ouvre la page même lorsque l'URL est entré dans le champ URL. Comment puis-je résoudre ceci? Et, est-ce que mon approche est fausse?
TIA
Steven

EDIT:
des réponses que je suis devenu si présent, je comprends que la bonne façon de procéder serait d'utiliser des sessions (basées sur les cookies). Quelqu'un peut-il me recommander un bon tutoriel sur le sujet? (alors que php.net contient des exemples, c'est une référence, pas un tutoriel)

Répondre

0

La vérification du référenceur n'est pas les meilleures idées. certains mandataires pourraient le dépouiller. en utilisant cookie-bases session serait plus approche «civilisée».

0

Vous devrez utiliser Wireshark ou Fiddler pour inspecter les en-têtes HTTP envoyés par Internet Explorer. Une fois que vous avez cela, il s'agit de travailler en arrière avec votre validation PHP pour trouver une solution qui fonctionne.

Cela dit, vous pourriez avoir plus de chance avec les superglobales $_SERVER["HTTP_REFERER"]

0

Utilisez des sessions pour vérifier si l'utilisateur est autorisé à entrer dans la zone protégée. IE est connu pour ne pas envoyer d'en-tête HTTP_REFERER avec certaines options de sécurité activées. Cela a bien fonctionné pour IE6, mais maintenant il est éteint la plupart du temps.

+0

Il est étrange que l'accès soit * toujours * accordé, alors que je m'attendrais à ce qu'il ne soit * jamais * accordé. Si HTTP_REFERER n'est pas envoyé, il ne peut certainement pas correspondre à la valeur requise? – stevenvh