Главная > php, Заметки, Статьи > Определение списка IP адресов пользователя

Определение списка IP адресов пользователя

Была задача определить с какого IP адреса зашел пользователь на сайт, причем всем известно, что получивший IP адрес через $_SERVER['REMOTE_ADDR'] дает для всех пользователей всего один IP в случае когда они выходят через прокси, т.е. у каждого пользователя имеется «серый» (внутренний) адрес. Код ниже, не претендует на правильность получения Всех адресов пользователя, но как минимум работает для 90% случаев, все зависит от удаленного пользователя:

function getIps()
{
$ips = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : '';
preg_match_all('#(\d+\.\d+\.\d+\.\d+)#', $ips, $m);
$m[0][]=$_SERVER['REMOTE_ADDR'];
$ips = sizeof($m) ? implode(',',array_unique($m[0])) : '';
return $ips;
}

php, Заметки, Статьи , , , ,

  1. 14 Окт 2009 из 16:08 | #1

    То есть в $_SERVER['HTTP_X_FORWARDED_FOR'] значение имеет вид 'NNN.NNN.NNN.NNN,MMM.MMM.MMM.MMM' ?

    Ни разу не видел такого. Надо бы проверить.

    А код примера, кстати, надо бы написать более стабильный. Если уж пишется проверка типа

    $ips = sizeof($m) ? ....

    то стоит писать и другие проверки

  1. Трекбеков пока нет.