首页 php怎样根据ip地址查地区

php怎样根据ip地址查地区

举报
开通vip

php怎样根据ip地址查地区php怎样根据ip地址查地区   很多网站里一打开他们的网页,便显示“江苏无锡的客户您好”等等,请问他们是怎样根据ip查到精确到市的地址的呢?下面是整理的php根据ip地址查地区,希望对大家有用,更多消息请关注网。   根据discuz里面的ip查询改的   /**   * ip地址所属地区计算   * 修改自 discuz   * 使用dicuz tinyipdata数据文件   * 将一些英文提示修改为汉字   * $is_simple true的话显示到市 false显示到网通电信等等   ******/  ...

php怎样根据ip地址查地区
php怎样根据ip地址查地区   很多网站里一打开他们的网页,便显示“江苏无锡的客户您好”等等,请问他们是怎样根据ip查到精确到市的地址的呢?下面是整理的php根据ip地址查地区,希望对大家有用,更多消息请关注网。   根据discuz里面的ip查询改的   /**   * ip地址所属地区计算   * 修改自 discuz   * 使用dicuz tinyipdata数据文件   * 将一些英文提示修改为汉字   * $is_simple true的话显示到市 false显示到网通电信等等   ******/   function convertip($ip,$is_simple=true,$ipfile='include/data/ip.dat') {   $return = '';   if( !file_exists($ipfile) ) $ipfile = '../'.$ipfile;   if(preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/", $ip)) {   $iparray = explode('.', $ip);   if($iparray[0] == 10 || $iparray[0] == 127 || ($iparray[0] == 192 && $iparray[1] == 168) || ($iparray[0] == 172 && ($iparray[1] >= 16 && $iparray[1] <= 31))) {   return '局域网';   } elseif($iparray[0] > 255 || $iparray[1] > 255 || $iparray[2] > 255 || $iparray[3] > 255) {   return 'ERR';   } elseif($is_simple) {   return change_simply_area(convertip_tiny($ip, $ipfile));   }   else {   return convertip_tiny($ip, $ipfile);   }   }   }   /**   * 从ip文件得到ip所属地区   *   * 过滤掉了具体的位置(如 网通/电信/**网吧) 基本到市   ***/   function convertip_tiny($ip, $ipdatafile) {   static $fp = NULL, $offset = array(), $index = NULL;   $ipdot = explode('.', $ip);   $ip = pack('N', ip2long($ip));   $ipdot[0] = (int)$ipdot[0];   $ipdot[1] = (int)$ipdot[1];   if($fp === NULL && $fp = @fopen($ipdatafile, 'rb')) {   $offset = unpack('Nlen', fread($fp, 4));   $index = fread($fp, $offset['len'] - 4);   } elseif($fp == FALSE) {   return '- Invalid IP data file';   }   $length = $offset['len'] - 1028;   $start = unpack('Vlen', $index[$ipdot[0] * 4] . $index[$ipdot[0] * 4 + 1] . $index[$ipdot[0] * 4 + 2] . $index[$ipdot[0] * 4 + 3]);   for ($start = $start['len'] * 8 + 1024; $start < $length; $start += 8) {   if ($index{$start} . $index{$start + 1} . $index{$start + 2} . $index{$start + 3} >= $ip) {   $index_offset = unpack('Vlen', $index{$start + 4} . $index{$start + 5} . $index{$start + 6} . "\x0");   $index_length = unpack('Clen', $index{$start + 7});   break;   }   }   fseek($fp, $offset['len'] + $index_offset['len'] - 1024);   if($index_length['len']) {   return mb_convert_encoding(fread($fp, $index_length['len']),'utf-8','gb2312'); //将读出的gb编码数据转成utf-8并返回   } else {   return '未知';   }   }   function change_simply_area($area) {   $tmp = explode(' ',$area); //过滤掉一些具体信息   return $tmp[0];   }   里面那个ipfile你可以去下载一个discuz 在 ipdata目录里面有wry.dat的文件就是了 其实这个就是网上用的最多的那个纯真版数据库 很多显示ip的qq用的也是那个   这两个函数的原型参考 discuz 里面 include\misc.func.php
本文档为【php怎样根据ip地址查地区】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_954223
暂无简介~
格式:doc
大小:6KB
软件:Word
页数:3
分类:互联网
上传时间:2017-03-29
浏览量:25