IE8 и HTTP_REFERER - PullRequest
       10

IE8 и HTTP_REFERER

0 голосов
/ 22 августа 2010

Я хочу разрешить доступ к определенной странице только с заданной страницы (где пользователь должен ввести пароль). Ввод URL-адреса непосредственно в поле URL браузера запрещен.
Я написал следующий код:

<?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");
?>

Это хорошо работает в Firefox, но IE8 открывает страницу, даже если URL-адрес введен в поле URL. Как мне это решить? И мой подход неверен?
ТИА
Стивен

EDIT:
Из ответов, которые я получил до сих пор, я понимаю, что правильный путь - это использование (на основе файлов cookie) сеансов. Может ли кто-нибудь порекомендовать мне хороший учебник по этому вопросу? (хотя php.net содержит несколько примеров, это ссылка, а не учебник)

Ответы [ 3 ]

0 голосов
/ 22 августа 2010

Вам потребуется использовать Wireshark или Fiddler для проверки ваших HTTP-заголовков, отправляемых Internet Explorer. Как только вы это получите, вам нужно вернуться назад с проверкой PHP, чтобы найти решение, которое работает.

Тем не менее, вам может повезти с суперглобальным $_SERVER["HTTP_REFERER"]

0 голосов
/ 22 августа 2010

Используйте сеансы для проверки, разрешено ли пользователю входить в защищенную область. IE известен тем, что не отправляет заголовок HTTP_REFERER с некоторыми включенными параметрами безопасности. Он отлично работал для IE6, но теперь он выключен большую часть времени.

0 голосов
/ 22 августа 2010

проверка реферера не самая лучшая идея. некоторые прокси могут лишить его. использование сеанса баз cookie было бы более «цивилизованным» подходом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...