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!