с работы правильно.. а как 127.0.0.1 получили то? еще внутренний можно понять, тут сервак его отдает..
Для "дебугинговых" целей лучше выводить время затраченное на определение А что один SQL запрос называется решением ?
Меня тоже правильно определил, но я видел однажды на одном сайте, где более подробно адрес показывают, включая город и даже поселок. Но я забыл ссылку.
если нет - брось в меня камень! =) собственнов се вот так: PHP: <? require_once('start.inc'); $OOPSGlobal["TEMPLATE"] = "template/page_inner.html"; $BODY = new OOPSBuffer(); $BODY->Send('<center>'); $BODY->Send('<table bgcolor=#777777 cellspacing=1 cellpadding=5>'); $BODY->Send('<tr bgcolor=#EEEEEE>'); $BODY->Send('<th>IP</th>'); $BODY->Send('<th colspan=2>Сеть</th>'); $BODY->Send('<th>Код</th>'); $BODY->Send('<th>Страна полное название</th>'); $BODY->Send('</tr>'); $IPS = split('[,; ]+',OOPSGetIP()); foreach($IPS AS $IP) { list($country_short,$country_long,$net_start,$net_stop) = ip2country($IP); $BODY->Send('<tr bgcolor=white>'); $BODY->Send('<td>'.$IP.'</td>'); $BODY->Send('<td>'.$net_start.'</td>'); $BODY->Send('<td>'.$net_stop.'</td>'); $BODY->Send('<td>'.$country_short.'</td>'); $BODY->Send('<td>'.$country_long.'</td>'); $BODY->Send('</tr>'); } $BODY->Send('</table>'); $BODY->Send('</div>'); $BODY->Send('</center>'); require_once('stop.inc'); ?> ip2country PHP: <? function ip2country($ip) { global $OOPSGlobal; $country1 = 'NA'; $country2 = '-'; $ipn = (float) sprintf("%u", ip2long($ip)); if (!eregi ("^(127|10|172\.16|192\.168)\.", $ip)) { $SQL = " SELECT * FROM ip2country WHERE start_long <= {$ipn} AND stop_long >= {$ipn} "; $row = $OOPSGlobal['SES']->db->QueryObject($SQL); if($row) return array($row->country,$row->country_name,$row->start_ip,$row->stop_ip); } if (eregi ("^(127|10|172\.16|192\.168)\.", $ip)) { return array('XXX','Local/Grey NetWork(s)','',''); } return array($country1,$country2,'',''); } ?>