Стандртный код получания IP-адреса выглядит так:
$ip=$_SERVER['REMOTE_ADDR']
Если мы хотим получить все, что нам может дать серверное окружение (X-Forwarded-For, Via и прочих), то возьмем и напишем простой код, который в цикле перебирает массив $_SERVER и регулярным выражением выбирает все заголовки, в которых встречается подходящая под шаблон IP-адреса строка. Если встретилась, то весь заголовок – с именем и всем содержимым – добавляем в строку.
function get_all_ip() {
$ip_pattern="#(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)#";
$ret="";
foreach ($_SERVER as $k => $v) {
if (substr($k,0,5)=="HTTP_" AND preg_match($ip_pattern,$v)) $ret.=$k.": ".$v."\n";
}
return $ret;
}
echo get_all_ip();Вариант более простого определения IP:
function getRealIpAddr()
{
if (!empty(@$_SERVER['HTTP_CLIENT_IP']))
return $_SERVER['HTTP_CLIENT_IP'];
elseif (!empty(@$_SERVER['HTTP_X_FORWARDED_FOR']))
return $_SERVER['HTTP_X_FORWARDED_FOR'];
else
return@$_SERVER['REMOTE_ADDR'];
}
Комментарии:
Пока нет комментариев.
Чтобы оставить комментарий, войдите.