Forum Webscript.Ru
Программирование => PHP => Тема начата: Tol от 11 Ноября 2002, 16:24:24
-
Подскажите пожалуйста как проверить пришел ли юзер с нужной мне страницы или нет ?
Заранее благодарю.
http://www.tak-news.com
-
Ловить HTTP_REFERER
-
ну а как словить его ?
-
$HTTP_SERVER_VARS["HTTP_REFERER"]
$SERVER["HTTP_REFERER"]
http://www.php.net/manual/en/reserved.variables.php#reserved.variables.server
-
правильный ответ:
getenv("HTTP_REFERER");
-
if ((getenv("HTTP_REFERER")<>"http://localhost/admin/")||(getenv("HTTP_REFERER")<>"http://localhost/admin/mySite.php"))
{
echo "Access denied!
";
}
else
{
echo "
вот так делаю и реферер правильный 100% - все ровно ACCESS DENIED !!! Почмеу ?
-
Если заход извне, то переменная пуста:
print(\'getenv
\');
print(getenv("HTTP_REFERER"));
print(\'HTTP:
\');
print($HTTP_SERVER_VARS["HTTP_REFERER"]);
print(\'test\');
?>
-
Tol
забей, такая проверка взламывается очень просто.
-
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!