Forum Webscript.Ru

Программирование => PHP => Тема начата: Tol от 11 Ноября 2002, 16:24:24

Название: Как проверить...
Отправлено: Tol от 11 Ноября 2002, 16:24:24
Подскажите пожалуйста как проверить пришел ли юзер с нужной мне страницы или нет ?
Заранее благодарю.

http://www.tak-news.com
Название: Как проверить...
Отправлено: ThE0ReTiC от 11 Ноября 2002, 16:39:08
Ловить HTTP_REFERER
Название: Как проверить...
Отправлено: Tol от 11 Ноября 2002, 16:45:02
ну а как словить его ?
Название: Как проверить...
Отправлено: ThE0ReTiC от 11 Ноября 2002, 16:50:03
$HTTP_SERVER_VARS["HTTP_REFERER"]
$SERVER["HTTP_REFERER"]
http://www.php.net/manual/en/reserved.variables.php#reserved.variables.server
Название: Как проверить...
Отправлено: Меняздесьдавнонет от 11 Ноября 2002, 17:13:42
правильный ответ:
getenv("HTTP_REFERER");
Название: Как проверить...
Отправлено: Tol от 11 Ноября 2002, 17:39:46
if ((getenv("HTTP_REFERER")<>"http://localhost/admin/")||(getenv("HTTP_REFERER")<>"http://localhost/admin/mySite.php"))
{
echo "

Access denied!

";
}
else
{
echo "

вот так делаю и реферер правильный 100% - все ровно ACCESS DENIED !!! Почмеу ?
Название: Как проверить...
Отправлено: ThE0ReTiC от 11 Ноября 2002, 17:46:03
Если заход извне, то переменная пуста:

print(\'getenv
\');
print(getenv("HTTP_REFERER"));
print(\'HTTP:
\');
print($HTTP_SERVER_VARS["HTTP_REFERER"]);
print(\'test\');
?>
Название: Как проверить...
Отправлено: Макс от 11 Ноября 2002, 20:45:34
Tol
забей, такая проверка взламывается очень просто.
Название: Как проверить...
Отправлено: Alexey333 от 12 Ноября 2002, 07:25:24
Цитировать
if ((getenv("HTTP_REFERER")<>"http://localhost/admin/")||(getenv("HTTP_REFERER")<>"http://localhost/admin/mySite.php"))
{
echo "

Access denied!

";
}
else
{
echo "

вот так делаю и реферер правильный 100% - все ровно ACCESS DENIED !!! Почмеу ?

У тебя проблемы с условным оператором. Ведь если ты заходишь с http://localhost/admin/mySite.php то реферер будет равен этому адресу и выполнится первое условие (несоответствие первому адресу) и выдаст сообщение Access denied! Аналогично и с первым адресом.
Вместо "или" (||) тебе надо поставить "и" (&&). Тогда все должно быть правильно, так как зайдя хотя бы с одной нужной страницы не будет выполнено условие Access denied!