rinald_未来往事

获取IP地址及对应城市函数 PHP

PHP
PHP获取IP地址及城市名函数
  1. //推荐方法: 更新于2016-11-23  
  2. public function getIp(){  
  3.     $unknown = 'unknown';  
  4.     if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] && strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'], $unknown) ) {  
  5.       $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];  
  6.     } elseif ( isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], $unknown) ) {  
  7.       $ip = $_SERVER['REMOTE_ADDR'];  
  8.     }else{  
  9.       $ip = $_SERVER['REMOTE_ADDR'] ? $_SERVER['REMOTE_ADDR'] : '000.000.000.000';  
  10.     }  
  11.     if ( strpos$ip',' ) ){    
  12.       $ipArr = explode','$ip );    
  13.       $ip = $ipArr[ 0 ];    
  14.     }  
  15.     return $ip;  
  16.   }  
  17. /**PS: 
  18. (1)该方法修复了Android系统下微信内置浏览器访问wap手机版程序页面获取到的IP地址不准确问题。关于关于获取IP地址过程中使用的'HTTP_X_FORWARDED_FOR、REMOTE_ADDR等参数详解可以参考本博客另外一篇文章:http://fity.cn/post/593/ 
  19. (2)在对wap程序页面进行测试中发现, 所有Android版的微信 内置浏览器访问的时候, 都会通过腾讯的一个代理, 然后才访问目的地址。iOS版的微信不会有这个问题。踩到大坑 **/  
  20.   
  21.   
  22. /** 
  23. * 获取 IP  地理位置 
  24. * @Return: ip 
  25. */  
  26. public function getIP() {  
  27.   if ( getenv"HTTP_CLIENT_IP" ) && strcasecmpgetenv"HTTP_CLIENT_IP" ), "unknown" ) ){  
  28.   $ip = getenv"HTTP_CLIENT_IP" );  
  29.   }else if ( getenv"HTTP_X_FORWARDED_FOR" ) && strcasecmpgetenv"HTTP_X_FORWARDED_FOR" ), "unknown" ) ){  
  30.   $ip = getenv"HTTP_X_FORWARDED_FOR" );  
  31.   }else if (getenv"REMOTE_ADDR" ) && strcasecmpgetenv"REMOTE_ADDR" ), "unknown" ) ){  
  32.   $ip = getenv"REMOTE_ADDR" );  
  33.   }else if ( isset( $_SERVER[ 'REMOTE_ADDR' ] ) && $_SERVER[ 'REMOTE_ADDR' ] 
  34.     && strcasecmp( $_SERVER[ 'REMOTE_ADDR' ], "unknown" ) ){ 
  35.   $ip = $_SERVER[ 'REMOTE_ADDR' ]; 
  36.   }else{ 
  37.   $ip = "unknown"; 
  38.   } 
  39.   if ( strpos( $ip, ',' ) ){ 
  40.   $ipArr = explode( ',', $ip ); 
  41.   $ip = $ipArr[ 0 ]; 
  42.   } 
  43.   return( $ip ); 
  44. } 
  45.  
  46.  
  47.   /** 
  48.    * 获取 IP  地理位置 
  49.    * 淘宝IP接口 
  50.    * @Return: array 
  51.    */ 
  52.   function getCity($ip){ 
  53.     $url="http://ip.taobao.com/service/getIpInfo.php?ip=".$ip; 
  54.     $ip=json_decode(file_get_contents($url));   
  55.     if((string)$ip->code=='1'){  
  56.        return false;  
  57.     }  
  58.     $data = (array)$ip->data;  
  59.     return $data;    
  60.   }  



原文作者:rinald
原文地址:http://fity.cn/post/542.html
互联网技术更新较快,本站很多文章具有实效性,我会及时更新原文,但转载的文章无法通知更新。为了不给读者造成困惑或误导,请您在转载时保留此出处信息,尊重别人也是尊重自己。

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。