|
|
|
| Единственное, что мне приходит в голову - это проверять - не пуст ли HTTP_X_FORWARDED_FOR или HTTP_VIA ... и если хоть один из них - !empty , то человеека считать под проксей. Правильное направление?
Если да... Использовать $_SERVER или $_ENV в этом случае ? И в чём между ними разница? | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: Саня
(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 "прокси";
}
?>
|
?
И будет ли работать такой код? | |
|
|
|
|
|
|
|
для: 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");
}
?>
|
| |
|
|
|
|
|
|
|
для: Саня
(19.01.2006 в 17:09)
| | У меня складывается впечатление, что getenv - это функция для взятия информации из переменных окружения. Но зачем она нужна? Ведь $_SERVER['REMOTE_ADDR'] - работает. И наверняка именно так работает и HTTP_X_FORWARDED_FOR ... | |
|
|
|
|
|
|
|
для: Shorr Kan
(20.01.2006 в 07:45)
| | Язык PHP не является ортогональным, многое в нём дублировано. | |
|
|
|
|
|
|
|
для: cheops
(20.01.2006 в 14:19)
| | Понятно. Но в чём различия $_ENV и $_SERVER ? Или и это - дубляж? | |
|
|
|
|
|
|
|
для: Shorr Kan
(20.01.2006 в 15:48)
| | Могу врать, но помоему $_ENV относится к глобальным настройкам сервера, а $_SERVER к текущему скрипту. | |
|
|
|