PHP查询ip所在地的几种方法(api实例)
根据IP地址查找我们的IP地址所在地,这个最简单办法就是直接把ip在百度搜索就可以知道你的IP地址所在地了,但对于一些网站我们不能使用此方法,但可以通过api来实现
例子,利用第三方接口实例
<form action="http://www.phprm.com" method="post"> <p>请输入ip地址:<input type="text" name="ip" /></p> <p><input type="submit" value="查询" /></p> </form> <?php //获取ip地址 //$ip = $_SERVER['REMOTE_ADDR']; //自动获取客户端的IP //ip对应的地区 if (!empty($_POST['ip'])) { $ip = $_POST['ip']; //接口地址,这样返回的是一个xml结果集, $str = file_get_contents("http://www.yodao.com/smartresult-xml/search.s?type=ip&q=" . $ip); //这里要得到里面的地址信息,提取xml方法有很多,我用的是正则。 preg_match_all("/<location>(.*?)</location>/", $str, $addr1); //最终结果,如图2; $addr = $ip . "=>" . $addr1[1][0]; echo $addr; } ?>
例子,利用QQWry
目前只支持PHP5版本。
安装
sudo pecl install qqwry-beta或者直接下载编译,phpize && ./configure && make && sudo make install
2.编辑php.ini,加入extension=qqwry.so
3.重启http server
使用很简单,首先就是实例化,传入纯真数据库的文件路径,然後调用q方法。该方法返回一个数组,第一个值为地址1,例如南宁市,第二个值为地址2,例如邕 宁区电信ADSL。看例子吧,一目了然。下面的iconv是把数据从GB2312转到UTF-8,如果你的站点是用GB2312,那么这一步是不需要的。输出:
<?php $qqwry = new qqwry('QQWry.Dat'); list($addr1, $addr2) = $qqwry->q('127.0.0.1'); $addr1 = iconv('GB2312', 'UTF-8', $addr1); $addr2 = iconv('GB2312', 'UTF-8', $addr2); echo $addr1, '|', $addr2, " "; $arr = $qqwry->q('222.216.47.4'); $arr[0] = iconv('GB2312', 'UTF-8', $arr[0]); $arr[1] = iconv('GB2312', 'UTF-8', $arr[1]); echo $arr[0], '|', $arr[1], " "; $arr = $qqwry->q('64.233.187.99'); $arr[0] = iconv('GB2312', 'UTF-8', $arr[0]); $arr[1] = iconv('GB2312', 'UTF-8', $arr[1]); echo $arr[0], '|', $arr[1], " "; ?>
本机地址|
广西南宁市|(青秀区)电信ADSL
美国|加利福尼亚州Google公司
例子,如果你只要查查IP地址就不需相面那么复杂了,如我在百度输入 110.110.110.110
显示地址为
IP地址: 110.110.110.110黑龙江省哈尔滨市 铁通
本文地址:http://www.phprm.com/code/57640.html
转载随意,但请附上文章地址:-)