使用ip进行地址查询
要想使用ip进行地址查询,需要连接GeoIP数据库。本文将使用freegroip.net提供的简单在线服务。
【示例】:找到用户的地理位置
<?PHP
function show_ip_info($ip){
//发出服务请求并输出结果,该网站请求的url按照http://freegeoip.net/{数据格式}/{要查询的ip地址}的格式。返回的数据格式是csv、xml、或者json。
$url = 'http://freegeoip.net/csv/'.$ip;
//打开连接
$fp = fopen($url,'r');
$read = fgetcsv($fp);
//关闭连接
fclose($fp);
echo "
<p>
IP Address:$ip</br>
Country:$read[2]</br>
City,State:$read[5],$read[3]</br>
</p>
";
}
show_ip_info($_SERVER['REMOTE_ADDR']);
$url = 'www.sdust.com';
show_ip_info(gethostbyname($url));
?>
注意:
1. 使用web服务的要点是明白使用什么URL和返回什么结果。为了便于调试,可以使用浏览器加载该服务以确认服务返回的结果。
2. IP地址并不是可靠的,比如,有时同一网络中的多个用户可能在外面看起来使用同一个IP地址。
3. 获得某个IP地址对应的域名,可以使用gethostbyaddr()函数。
4. 如果一个URL指向的站点运行在多个服务器上gethostbynamel()函数会返回所有的IP地址。