|
|
|
| Наткнулся в одном скрипте на такую функцию:
function get_ip()
{
$ip = false;
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ipa[] = trim(strtok($_SERVER['HTTP_X_FORWARDED_FOR'], ','));
if (isset($_SERVER['HTTP_CLIENT_IP']))
$ipa[] = $_SERVER['HTTP_CLIENT_IP'];
if (isset($_SERVER['REMOTE_ADDR']))
$ipa[] = $_SERVER['REMOTE_ADDR'];
if (isset($_SERVER['HTTP_X_REAL_IP']))
$ipa[] = $_SERVER['HTTP_X_REAL_IP'];
// проверяем ip-адреса на валидность начиная с приоритетного.
foreach($ipa as $ips)
{
// если ip валидный обрываем цикл, назначаем ip адрес и возвращаем его
if($this->is_valid_ip($ips))
{
$ip = $ips;
break;
}
}
return $ip;
}
|
Вообще, раньше я не парился по этому поводу, определял так:
$ipa = $_SERVER['REMOTE_ADDR'];
|
Вопрос: Где можно почитать описание вышеуказанных переменных массива $_SERVER?
В мануале описания этих переменных не нашел. | |
|
|
|
|
|
|
|
для: tAleks
(02.06.2012 в 17:02)
| | То, что начинается с X - это нестандартные HTTP-заголовки, которые вводятся серверами, клиентами, а то и пользователями. Конкретно за этими нужно в исходные коды лезть, в HTTP_X_FORWARDED_FOR иногда помещают истинный IP-адрес, если клиент обращается через прокси-сервер, поэтому эта проверка идет первой. HTTP_CLIENT_IP - судя по всему из той же оперы. В общем, если у вас не так много клиентов из под прокси-серверов, можете не заморачиваться, а если много, тоже можете не заморачиваться - прозрачными прокси-серверами почти никто не пользуется, а непрозрачный вам ничего не сообщит о клиенте. | |
|
|
|
|
|
|
|
для: tAleks
(02.06.2012 в 17:02)
| | HTTP_X_FORWARDED_FOR полезен для вап-сайтов. В нем содержится реальный ИП пользователя, смотрящего через мини-оперу. А таких очень много. | |
|
|
|