当前位置:首页 > PHP教程 > php类库 > 列表

PHP中实现获取IP和地理位置类分享

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-11 10:28:50 浏览: 评论:0 

这篇文章主要介绍了PHP中实现获取IP和地理位置类分享,本文地理定位使用的是SINA的通用接口,需要的朋友可以参考下

发现之前有一个脚本没有写完,简单扩充了一下。

获取IP使用的是经典的逻辑,地理定位使用的是SINA的通用接口。

使用方法详见源码:

  1. <?php 
  2. /* 
  3.  * GET LOCATION BY SINA IP INTERFACE 
  4.  * 
  5.  *              @SOULTEARY 2013.04.14 
  6.  */ 
  7. classIP 
  8. { 
  9.     private $args=array(); 
  10.  
  11.     function__construct() 
  12.     { 
  13.         $this->args=self::init_args(func_get_args()); 
  14.         $ip=self::GetIP(); 
  15.  
  16.         $ret=preg_match_all('/(\d+\.){3}\d+/i',$ip,$result); 
  17.         if(!$ret){ 
  18.             returnfalse; 
  19.         }else{ 
  20.             $result=$result[0]; 
  21.         } 
  22.  
  23.         if(isset($this->args['ONLYIP'])&&$this->args['ONLYIP']==true){ 
  24.  
  25.             if(isset($this->args['FORMAT'])&&$this->args['FORMAT']=='JSON'){ 
  26.                 $result=json_encode($result); 
  27.             }else{ 
  28.                 $result=implode(',',$result); 
  29.             } 
  30.             if(isset($this->args['ECHO'])&&$this->args['ECHO']==true){ 
  31.                 echo$result; 
  32.                 returntrue; 
  33.             }else{ 
  34.                 return$result; 
  35.             } 
  36.         }else{ 
  37.  
  38.             $apiURL='http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip='.$result[0]; 
  39.             if(isset($this->args['FORMAT'])&&$this->args['FORMAT']=='JSON'){ 
  40.                 $apiURL.='&format=json'; 
  41.                 $return=$this->ipCURL($apiURL); 
  42.             }else{ 
  43.                 $return=$this->ipCURL($apiURL); 
  44.                 $return=iconv("GBK//IGNORE","UTF-8",$return); 
  45.             } 
  46.  
  47.             if(isset($this->args['ECHO'])&&$this->args['ECHO']==true){ 
  48.                 echo$return; 
  49.                 returntrue; 
  50.             }else{ 
  51.                 return$return; 
  52.             } 
  53.  
  54.         } 
  55.  
  56.     } 
  57.  
  58.     public functioninit_args($args) 
  59.     { 
  60.         $result=array(); 
  61.         for($i=0,$n=count($args);$i<$n;$i++){ 
  62.             $result=self::associative_push($args[$i],$result); 
  63.         } 
  64.         return$result; 
  65.     } 
  66.  
  67.     public functionassociative_push($arr,$tmp) 
  68.     { 
  69.         if(is_array($tmp)){ 
  70.             foreach($tmpas$key=>$value){ 
  71.                 $arr[$key]=$value; 
  72.             } 
  73.             return$arr; 
  74.         } 
  75.         returnfalse; 
  76.     } 
  77.  
  78.     public functionGetIP() 
  79.     { 
  80.         if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])&&$_SERVER['HTTP_X_FORWARDED_FOR']&&strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'],'unknown')){ 
  81.             return$_SERVER['HTTP_X_FORWARDED_FOR']; 
  82.         }elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown')){ 
  83.             return$_SERVER['REMOTE_ADDR']; 
  84.         } 
  85.     } 
  86.  
  87.     private functionipCURL($url) 
  88.     { 
  89.         $ch=curl_init(); 
  90.         curl_setopt($ch,CURLOPT_URL,$url); 
  91.         curl_setopt($ch,CURLOPT_HEADER,0); 
  92.         ob_start(); 
  93.         curl_exec($ch); 
  94.         curl_close($ch); 
  95.         $result=ob_get_contents(); 
  96.         ob_end_clean(); 
  97.         return$result; 
  98.     } 
  99. } 
  100.  
  101. ?> 
  102. <!DOCTYPE html> 
  103. <html> 
  104. <head> 
  105.     <meta charset="utf8"> 
  106.     <title>demo</title> 
  107.     <script type="text/javascript"> 
  108.         varip="<?php new IP(array('ONLYIP'=>true, 'ECHO'=>true));?>"; 
  109.         vardata=<?php newIP(array('FORMAT'=>'JSON','ECHO'=>true));?>; 
  110.         varresult=''; 
  111.         for(oo indata){ 
  112.             result+=oo+':'+data[oo]+"\n"; 
  113.         } 
  114.         alert(result+ip); 
  115.     </script> 
  116. </head> 
  117. <body> 
  118. <h1>CODE:</h1> 
  119.  
  120. <h2>GETIP</h2> 
  121.  
  122. <p>'ONLYIP'=>true,'ECHO'=>true</p> 
  123.  
  124. <p><?phpnewIP(array('ONLYIP'=>true,'ECHO'=>true));?></p> 
  125.  
  126. <P>'ONLYIP'=>true,'FORMAT'=>'JSON','ECHO'=>true</P> 
  127.  
  128. <p><?phpnewIP(array('ONLYIP'=>true,'FORMAT'=>'JSON','ECHO'=>true));?></p> 
  129.  
  130. <h2>GET Location</h2> 
  131.  
  132. <p>'ECHO'=>true</p> 
  133.  
  134. <p><?phpnewIP(array('ECHO'=>true));?></p> 
  135.  
  136. <p>'FORMAT'=>'JSON','ECHO'=>true</p> 
  137.  
  138. <p><?php newIP(array('FORMAT'=>'JSON','ECHO'=>true));?></p> 
  139. </body> 
  140. </html>

Tags: PHP获取IP PHP获取地理位置类

分享到: