联系电话:0755-27515592
最新动态:

PHP教程

你的位置: 首页>>智慧亿恩>>PHP教程

PHP根据IP地址判断城市实现城市切换或跳转代码

点击数:22072015-07-17 09:51:51 来源: 外贸网站建设,深圳外贸网站建设,深圳网站建设,外贸商城网站制作-亿恩科技

新闻摘要:先要获取ip地址相当简单,下面先介绍两种获取IP地址的代码,后面需要利用QQIP库来查找当前IP是属于那个IP段然后得出城市字段并返回. 获取IP地址,代码如下: ?php function GetIP(){ if ( $_SERVER

先要获取ip地址相当简单,下面先介绍两种获取IP地址的代码,后面需要利用QQIP库来查找当前IP是属于那个IP段然后得出城市字段并返回.

获取IP地址,代码如下:

  1. <?php 
  2. function GetIP() { 
  3.     if ($_SERVER["HTTP_X_FORWARDED_FOR"]) 
  4.         $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; 
  5.     else if ($_SERVER["HTTP_CLIENT_IP"]) 
  6.         $ip = $_SERVER["HTTP_CLIENT_IP"]; 
  7.     else if ($_SERVER["REMOTE_ADDR"]) 
  8.         $ip = $_SERVER["REMOTE_ADDR"]; 
  9.     else if (getenv("HTTP_X_FORWARDED_FOR")) 
  10.         $ip = getenv("HTTP_X_FORWARDED_FOR"); 
  11.     else if (getenv("HTTP_CLIENT_IP")) 
  12.         $ip = getenv("HTTP_CLIENT_IP"); 
  13.     else if (getenv("REMOTE_ADDR")) 
  14.         $ip = getenv("REMOTE_ADDR"); 
  15.     else 
  16.         $ip = "Unknown"
  17.     return $ip
  18. echo GetIP(); 
  19. ?> 

方法二,代码如下:

  1. function getip () 
  2.      if (getenv('http_client_ip')) { 
  3.       $ip = getenv('http_client_ip'); 
  4.      } else if (getenv('http_x_forwarded_for')) { 
  5.       $ip = getenv('http_x_forwarded_for'); 
  6.     } else if (getenv('remote_addr')) { 
  7.       $ip = getenv('remote_addr'); 
  8.     } else { 
  9.       $ip = $_server['remote_addr']; 
  10.     } 
  11. return $ip;  

PHP通过IP地址判断用户所在城市

上文已经获得了用户IP地址,接下来,我们就是根据这个IP地址获得用户所在城市了,开始之前,我们需要下载一个现成的数据库QQ IP数据库.

最新IP地址数据库:http://8.zjdx2.crsky.com/201209/qqwry0830.rar

使用方法:解压后QQWry.Dat就是我们想要IP地址数据库,我们新建一个ipcity文件夹,将数据库放在下面,QQ IP数据库使用非常方便,数据也很齐全,你可以及时关注官方更新以保持数据最新,强力推荐一下.

接下来,我们在上面的ipcity目录下新建一个ipaddress.php文件,直接复制以下代码进去即可,重要的地方也作了相应注释,代码如下:

  1. <?php 
  2. /* 
  3. 函数名称:ipCity 
  4. 参数说明:$userip——用户IP地址 
  5. 函数功能:PHP通过IP地址判断用户所在城市 
  6. author:lee 
  7. contact:xpsem2010@gmail.com 
  8. */ 
  9. function ipCity($userip) { 
  10.     //IP数据库路径,这里用的是QQ IP数据库 20110405 纯真版 
  11.     $dat_path = 'QQWry.dat'
  12.  
  13.     //判断IP地址是否有效 
  14.     if(!ereg("^([0-9]{1,3}.){3}[0-9]{1,3}$"$userip)){ 
  15.         return 'IP Address Invalid'
  16.     } 
  17.  
  18.     //打开IP数据库 
  19.     if(!$fd = @fopen($dat_path'rb')){ 
  20.         return 'IP data file not exists or access denied'
  21.     } 
  22.  
  23.     //explode函数分解IP地址,运算得出整数形结果 
  24.     $userip = explode('.'$userip); 
  25.     $useripNum = $userip[0] * 16777216 + $userip[1] * 65536 + $userip[2] * 256 + $userip[3]; 
  26.  
  27.     //获取IP地址索引开始和结束位置 
  28.     $DataBegin = fread($fd, 4); 
  29.     $DataEnd = fread($fd, 4); 
  30.     $useripbegin = implode('', unpack('L'$DataBegin)); 
  31.     if($useripbegin < 0) $useripbegin += pow(2, 32); 
  32.     $useripend = implode('', unpack('L'$DataEnd)); 
  33.     if($useripend < 0) $useripend += pow(2, 32); 
  34.     $useripAllNum = ($useripend - $useripbegin) / 7 + 1; 
  35.  
  36.     $BeginNum = 0; 
  37.     $EndNum = $useripAllNum
  38.  
  39.     //使用二分查找法从索引记录中搜索匹配的IP地址记录 
  40.     while($userip1num>$useripNum || $userip2num<$useripNum) { 
  41.         $Middleintval(($EndNum + $BeginNum) / 2); 
  42.  
  43.         //偏移指针到索引位置读取4个字节 
  44.         fseek($fd$useripbegin + 7 * $Middle); 
  45.         $useripData1
    【责任编辑:(Top) 返回页面顶端
贴心
全国7×24小时客服热线
安全
病毒杀除率高于99%
稳定
网站可用性高于99.9%
实力
服务68家上市企业及集团公司
  • 中国·深圳·总部
  • 电话:0755-27515592
  • Q Q:1651353007
  • 地址:深圳市坪山区坑梓街道梓横西路49号D栋7F
  • 广州分公司
  • 电话:020-36673373
  • Q Q:1587248488
  • 地址:广州市流花路11号西郊大厦A座5021室
亿恩科技手机站
关注亿恩科技微信

亿恩科技—企业信息化一站式服务专家


Copyright © 2008- 深圳市亿恩科技有限公司版权所有 粤ICP备15056041号

联系我们 | 常见问题 | 在线留言 | 支付方式 | 软件开发 | 我的观点 | 资质荣誉 | 服务流程