好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP查询ip所在地的几种方法 - php高级应用

PHP查询ip所在地的几种方法

根据IP地址查找我们的IP地址所在地,这个最简单办法就是直接把ip在百度搜索就可以知道你的IP地址所在地了,但对于一些网站我们不能使用此方法,但可以通过api来实现.

例子,利用第三方接口实例,代码如下:

<form action= ""  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 empty ( $_POST [ 'ip' ])){     $ip  =  $_POST [ 'ip' ];     //接口地址,这样返回的是一个xml结果集,      $str  =  file_get_contents ( "http://HdhCmsTestyodao测试数据/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版本.

安装:

1.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,那么这一步是不需要的,代码如下:

$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黑龙江省哈尔滨市 铁通

查看更多关于PHP查询ip所在地的几种方法 - php高级应用的详细内容...

  阅读:56次