BBS.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


奥运快报: 
奥运热点:
 

[源码] 纯php实现ip或ip段转换地名或其它解释
首页 » 论坛 » Php »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
版主 hightman   帅哥
版主-光明使者



UID:131370
注册:2004-2-8
最后登录: 2008-06-03
帖子:940
精华:12

可用积分:1032 (家境小康)
信誉积分:100
空间积分:0 (白手起家)
专家积分:0 (本版)

来自:泉州->杭州
状态:...离线...

[个人空间] [短信] [博客]


顶部
1楼 发表于 2008-3-11 17:03 
[功能]

2008/04/09 更新程序,修正 MIC_make_data.php 的一处小错误
在线演示: http://www.hightman.cn/demo/MyIpConv/demo.php
下载: 参见附件 (不含文本数据, 太大了,麻烦, 从纯真中转或自己建立)

用于将IP地址范围转换成描述字符串,常用于IP位置查询,城市查询,ISP查询等。
纯 php 代码完成,不依赖任何扩展,采用二分查找定位IP区间,速度很快。
文本词典可兼容纯真IP数据库,提供程序脚本转换文本文件至本程序使用的数据。
经比较本词典最终生成的二进制文件比纯真结构还略小。
现在网上流行的基本上是采用纯真数据库,但该库自己修改不太方便,也不利于修
改成其它查询。

[说明]
./example.php             - 查询测试
./MIC_make_data.php       - 文本词典转换脚本
                            php MIC_make_data.php <文本文件> <输出的库文件>
./MIC_query.inc.php       - 查询主类
                            有: open($fpath), query($ip), version(void), close()
                            这几个方法
./mic.dat                 - 转换纯真IP库
./mic.txt                 - 纯真IP数据库

[txt词典说明]
// mic.txt 的格式为一行一条记录, 每条记录由 4 个字段组成, 字段之间用空格
// 或者制表符分开, 空格个数无所谓, 纯真 IP 的导出数据可直接使用, 只有最后
// 一个字段内部可以包含空格, 前三个字段不允许出现空格.
//
// 注: 对 mic.txt 无特别要求, 不需要事先排序, 也不需要范围调整, 转换程序会
//     自动进行修正, 以方便大家自行添加记录.  
//
//     当起起始 IP 使用 CIDR 计算方式时, 则省略 结束IP
//
// <起始IP> <结束IP> <解释1(通常为国别/省市)>  <解释2(具体其它说明,可以为空)>
//
// 如:
//
// 218.10.6.45     218.10.6.57     黑龙江省齐齐哈尔市 网通
// 218.10.6.58     218.10.6.58     黑龙江省齐齐哈尔市 梅里斯区雅尔塞镇欣欣网吧
// 218.10.6.75     218.10.6.75     黑龙江省齐齐哈尔市拜泉县 超人网吧
// 218.10.6.59     218.10.6.74     黑龙江省齐齐哈尔市 网通
//
// 210.32.0.0/16                   浙江省杭州市  浙江大学
//

[dat数据结构]
文本数据较为简单,文中所有的整型数据均以 Little endian 方式存储。解释如下:
1. 前4字节固定为:CTIP
2. 第 4 ~ 8 字节:索引记录的条数
3. 紧接着是索引记录,每一条索引为 12 字节,三个整数。
   分别为:起始IP地址,解释1的相对偏移,解释2的相对偏移。
4. 索引数据根据起始IP线性排列
5. 索引数据之后另外还有 12 字节的数据,依次为最后一条索引记录的
   [终止IP] [解释1的数据总长] [词典生成时间戳]
6. 再紧接着就是解释1的数据,每条解释的数据第一字节的ASCII值代表数据的长度,
   然后紧接着就是解释数据字符串。
   (这样做的目的是为了重用这些解释字符串)
   解释1的绝对偏移 = (索引记录条数) * 12 + 20 + 解释1的相对偏移
7. 解释2的数据存取类似解释1
   解释2的绝对偏移 = (索引记录条数) * 12 + 20 + 解释1的总长度 + 解释2的相对偏移

[其它应用]
除可以查询IP所在地外,可以通过自己制作文本数据库再加以转换以便判断用户的来源ISP
(典型如网通、电信、教育网、海外)然后自动跳转到相应的域名或IP,以求得最好的用户
访问速度。

--
后语:希望大家共享自己的相关IP数据数据

[ 本帖最后由 hightman 于 2008-4-9 18:49 编辑 ]



2008-4-9 18:49
  下载次数: 229
MyIpConv-0.1.rar (7.2 KB)
 
2008-3-11 17:03
  下载次数: 344
mic.dat.rar (1.82 MB)
 


您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

我的 TwoMice音乐网(6万首MP3,6000首伴奏)
PHP进阶QQ群欢迎您: 17708754

空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
panzt   帅哥
精灵




UID:261957
注册:2005-4-30
最后登录: 2008-09-03
帖子:230
精华:1

可用积分:243 (白手起家)
信誉积分:100
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...保密...

[个人空间] [短信] [博客]


顶部
2楼 发表于 2008-3-11 17:12 
很实用的东东,顶!!!!



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________


空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
taohui   帅哥 (taohui)
精灵王



UID:279864
注册:2005-6-12
最后登录: 2008-08-08
帖子:357
精华:0

可用积分:420 (白手起家)
信誉积分:100
空间积分:0 (白手起家)
专家积分:0 (本版)

来自:china
状态:...离线...

[个人空间] [短信] [博客]


顶部
3楼 发表于 2008-3-11 18:45 
收藏了



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

欧洲互助游
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
vantien   帅哥
精灵王




UID:53877
注册:2003-4-26
最后登录: 2008-04-29
帖子:347
精华:0

可用积分:378 (白手起家)
信誉积分:100
空间积分:0 (白手起家)
专家积分:0 (本版)

来自:Hell
状态:...离线...

[个人空间] [短信] [博客]


顶部
4楼 发表于 2008-3-11 18:47 
研究看看.
感谢分享.



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

Today is not my day
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
小胡他爹 (怪叔叔)
精灵



UID:521454
注册:2007-1-23
最后登录: 2008-09-01
帖子:210
精华:0

可用积分:785 (稍有积蓄)
信誉积分:105
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...保密...

[个人空间] [短信] [博客]


顶部
5楼 发表于 2008-3-11 21:49 
研究看看.
感谢分享.



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

布谷鸟中文小说搜索引擎
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
d_bsky
圣骑士



UID:671719
注册:2008-2-28
最后登录: 2008-07-12
帖子:81
精华:0

可用积分:80 (白手起家)
信誉积分:0
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


顶部
6楼 发表于 2008-3-11 21:54 
不知道我这个水平能不能算研究哦!!下下看看.顶!!!!!!!!!!!!!



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

追求至高无上的技术
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
zjq8188
圣骑士




UID:344786
注册:2005-12-3
最后登录: 2008-08-23
帖子:84
精华:0

可用积分:85 (白手起家)
信誉积分:100
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


顶部
7楼 发表于 2008-3-11 23:33 
要怎么才能只提取诚市不要全部的信息呢
比如

四川省成都xxxxx 电信ADSL

我只要提取成都两个字要怎么做呢



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
panzt   帅哥
精灵




UID:261957
注册:2005-4-30
最后登录: 2008-09-03
帖子:230
精华:1

可用积分:243 (白手起家)
信誉积分:100
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...保密...

[个人空间] [短信] [博客]


顶部
8楼 发表于 2008-3-12 08:44 


QUOTE:
原帖由 zjq8188 于 2008-3-11 23:33 发表
要怎么才能只提取诚市不要全部的信息呢
比如

四川省成都xxxxx 电信ADSL

我只要提取成都两个字要怎么做呢

只要格式都一样,可以试着将只取省后面市前面的几个字符,大数据量下,还是用正则比较好



您对本贴的看法:鲜花[2] 臭蛋[0]

__________________________________


空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
7717060 (研究僧)
精灵使


CU奥运火炬传递手2008
UID:417517
注册:2006-5-16
最后登录: 2008-09-05
帖子:2936
精华:1

可用积分:2842 (小富即安)
信誉积分:105
空间积分:805 (稍有积蓄)
专家积分:10 (本版)

状态:...保密...

[个人空间] [短信] [博客]


顶部
9楼 发表于 2008-3-12 08:54 
好东西啊,不错



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

一直被模仿,从为被超越。
http://7717060.cublog.cn/
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
19193213 (red)
侠客




UID:675469
注册:2008-3-12
最后登录: 2008-08-12
帖子:25
精华:0

可用积分:40 (白手起家)
信誉积分:0
空间积分:0 (白手起家)
专家积分:0 (本版)

状态:...离线...

[个人空间] [短信] [博客]


顶部
10楼 发表于 2008-3-12 10:15 
收藏.



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘

首页 » 论坛 » Php »


 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.070986 second(s), 5 queries , Gzip enabled