Проблема с определением ip адреса

Black Rabbit

Новичок
Проблема с определением ip адреса

Нужна функция для определения реального ip адреса. Пишу

function show_ip()
{
$lan_ip= array('10.0.0.', '192.168.', '127.0.0.', '172.16.0.');
if($ip=getenv("http_client_ip"));
elseif($ip=getenv("http_x_forwarded_for"));
else $ip=getenv("remote_addr");
if($ip=="unknown") $ip=getenv("remote_addr");
else
{
for($i=0;$i<sizeof($lan_ip);$i++)
{
if(strpos($ip,$lan_ip[$i]))
$ip=getenv("remote_addr");
}
}
return $ip;
}

То есть, если человек сидит за прокси и http_x_forwarded_for возвращает айпи в локальной сети, необходимо брать remote_addr
В некоторых случаях все равно возвращаются адреса вида 192.168.0.21
С чем это может быть связано и как устранить проблему??
Заранее спасибо
 

Black Rabbit

Новичок
Нет, это все не то. Проблема в адресах вида 192.168.xxx.xxx
Почему remote_addr возвращает подобные значения?
 

Фанат

oncle terrible
Команда форума
проблему устранить просто.
не быть лохом и ремоте аддр писать ВСЕГДА
а остальное - по желанию
 

Black Rabbit

Новичок
У меня проверка стоит

$lan_ip= array('10.0.0.', '192.168.', '127.0.0.', '172.16.0.');

for($i=0;$i<sizeof($lan_ip);$i++)
{
if(strpos($ip,$lan_ip[$i]))
$ip=getenv("remote_addr");
}
 

Фанат

oncle terrible
Команда форума
повторяю.
читай по буквам:
безотносительно к кривости твоей "проверки", надо не быть лохом и ремоте аддр писать ВСЕГДА
 

SelenIT

IT-лунатик :)
А безотносительно к проверке IP - цитата из мануала (strpos):
Внимание
Эта функция может возвращать как логическое значение FALSE, так и не относящееся к логическому типу значение, которое приводится к FALSE, например, 0 или "". За более подробной информации обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.
 
Сверху