当前位置:首页 > PHP教程 > php函数 > 列表

php根据ip获取地区的程序代码

发布:smiling 来源: PHP粉丝网  添加日期:2014-06-26 09:03:28 浏览: 评论:0 

根据IP地址来获取用户所在的地区,这个需要借助一个外部api或一个数据库来记录IP地址是哪里的,下面我总结一些常用的方法给各位参考,先用php获取本机的ip,再用php的curl函数来获取用户的详细地区,下面来看一下代码:

  1. /* 
  2.  * 这个函数是获取客户端和IP 
  3.  
  4.  */ 
  5. function GetIP() 
  6.  if(!emptyempty($_SERVER["HTTP_CLIENT_IP"])) 
  7.  { 
  8.   $cip = $_SERVER["HTTP_CLIENT_IP"]; 
  9.  } 
  10.  else if(!emptyempty($_SERVER["HTTP_X_FORWARDED_FOR"])) 
  11.  { 
  12.   $cip = $_SERVER["HTTP_X_FORWARDED_FOR"]; 
  13.  } 
  14.  else if(!emptyempty($_SERVER["REMOTE_ADDR"])) 
  15.  { 
  16.   $cip = $_SERVER["REMOTE_ADDR"]; 
  17.  } 
  18.  else 
  19.  { 
  20.   $cip = ''
  21.  } 
  22.  preg_match("/[d.]{7,15}/"$cip$cips); 
  23.  $cip = isset($cips[0]) ? $cips[0] : 'unknown'
  24.  unset($cips); 
  25.  return $cip
  26. }  

方法一,利用QQWry.Dat IP库,用简单的办法,使用示例如下:

  1. $IpLocation = new IpLocation(); 
  2. $client = $IpLocation->getlocation(); 
  3. print_r($client); 

示例二,代码如下:

  1. $IpLocation = new IpLocation('../qqwry/QQWry.Dat'); 
  2. $client = $IpLocation->getlocation('115.148.101.72'); 
  3. print_r($client); 

具体的IP库与Iplocation类文件这里不介绍了大家百度搜索吧。

方法二,利用api接口

示例一,代码如下:

  1.   /** 
  2.   * 获取IP地区 
  3.   * Enter description here ... 
  4.   * @param unknown_type $ip 
  5.   */ 
  6.  function GetArea($ip){ 
  7.  
  8.  $url = "http://ip168.com/ip/?ip=".$ip
  9.  $contents = file_get_contents($url); 
  10. // preg_match_all('/<h3[sS]*?(<a[sS]*?</h3>)/',$contents,$rs); 
  11.  preg_match_all('|<div>本站主数据:.*</div>|',$contents,$rsR); 
  12.  $rsR[0][0] = str_replace("<div>本站主数据:"""$rsR[0][0]); 
  13.  $rsR[0][0] = str_replace("</div>"""$rsR[0][0]); 
  14.  return $rsR[0][0]; 
  15.  } 

示例二,下面这个函数是用php的curl函数从网路上获取详细地区,代码如下:

  1. function lazdf($ip){ 
  2.  
  3. $curl= curl_init(); 
  4.  
  5. curl_setopt($curl,CURLOPT_URL,"http://www.ip138.com/ips138.asp?ip=".$ip); 
  6. curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); 
  7. $ipdz=curl_exec($curl); 
  8. curl_close($curl); 
  9. preg_match("/<ul class="ul1"><li>(.*?)</li>/i",$ipdz,$jgarray); 
  10. preg_match("/本站主数据:(.*)/i"$jgarray[1],$ipp); 
  11.  
  12. return  "<div class="global_widht global_zj zj" style="background: none repeat scroll 0% 0% rgb(226, 255, 191); font-size: 12px; color: rgb(85, 85, 85); height: 30px; line-height: 30px; border-bottom: 1px solid rgb(204, 204, 204); text-align: left;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;欢迎来自&nbsp;<b>".$ipp[1]."</b>&nbsp;的朋友!</div>"
  13.  
  14.  
  15. echo lazdf(GetIP());//输出phpfensi.comip

Tags: ip获取地区 php程序代码

分享到: