Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Определение прокси
 
 автор: Shorr Kan   (19.01.2006 в 15:28)   письмо автору
 
 

Единственное, что мне приходит в голову - это проверять - не пуст ли HTTP_X_FORWARDED_FOR или HTTP_VIA ... и если хоть один из них - !empty , то человеека считать под проксей. Правильное направление?

Если да... Использовать $_SERVER или $_ENV в этом случае ? И в чём между ними разница?

   
 
 автор: Саня   (19.01.2006 в 16:26)   письмо автору
 
   для: Shorr Kan   (19.01.2006 в 15:28)
 

Вообще-то если не пуста переменная HTTP_X_FORWARDED_FOR, то не пуста и HTTP_VIA.
Если обе эти переменные пусты, значит одно из двух:
1. Либо прокси не используется
2. Это "элитный" прокси

http://freeproxy.ru/ru/free_proxy/faq/proxy_anonymity.htm

   
 
 автор: Shorr Kan   (19.01.2006 в 16:56)   письмо автору
 
   для: Саня   (19.01.2006 в 16:26)
 

Использовать $_SERVER или $_ENV в этом случае ? И в чём между ними разница?

Я имею ввиду:

<?
if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']) or !empty($_SERVER['HTTP_VIA'])){
print 
"прокси";
}
?>


или


<?
if(!empty($_ENV['HTTP_X_FORWARDED_FOR']) or !empty($_ENV['HTTP_VIA'])){
print 
"прокси";
}
?>


?

И будет ли работать такой код?

   
 
 автор: Саня   (19.01.2006 в 17:09)   письмо автору
 
   для: Shorr Kan   (19.01.2006 в 16:56)
 

Нет, не будет.
Получить значение HTTP_X_FORWARDED_FOR и HTTP_VIA нужно так:
<?php
$forward 
getenv('HTTP_X_FORWARDED_FOR');
$via getenv('HTTP_VIA');
if (empty(
$forward) && empty($via)) {
  echo(
"NO proxy detected");
} else {
  echo(
"Proxy detected");
}
?>

   
 
 автор: Shorr Kan   (20.01.2006 в 07:45)   письмо автору
 
   для: Саня   (19.01.2006 в 17:09)
 

У меня складывается впечатление, что getenv - это функция для взятия информации из переменных окружения. Но зачем она нужна? Ведь $_SERVER['REMOTE_ADDR'] - работает. И наверняка именно так работает и HTTP_X_FORWARDED_FOR ...

   
 
 автор: cheops   (20.01.2006 в 14:19)   письмо автору
 
   для: Shorr Kan   (20.01.2006 в 07:45)
 

Язык PHP не является ортогональным, многое в нём дублировано.

   
 
 автор: Shorr Kan   (20.01.2006 в 15:48)   письмо автору
 
   для: cheops   (20.01.2006 в 14:19)
 

Понятно. Но в чём различия $_ENV и $_SERVER ? Или и это - дубляж?

   
 
 автор: cheops   (20.01.2006 в 23:55)   письмо автору
 
   для: Shorr Kan   (20.01.2006 в 15:48)
 

Могу врать, но помоему $_ENV относится к глобальным настройкам сервера, а $_SERVER к текущему скрипту.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования