网站首页 爱站云资源网 值得一看 正文
就是一个可以查询ip地址的软件,可以装在QQ中,让你查询ip地址很方便。但是不怎么好用。实用性不大。他那个数据库里包含了大部分ip地址的归属地。
纯真ip数据库怎么用(详细点的)
你是使用PHP来读取数2113据库的吗?
如果是的话,那么5261,你把下面4102的这个类保存成一个文件:1653
————————————————————
<?php
/**
*IP地理位置查询类
*
*@authorjoyphper
*@version1.0
*@copyright2010joyphper.net
*/
classip_area{
/**
*
*
*@varresource
*/
private$fp;//IP库文件指针resource
private$firstip;//第一条IP记录的偏移地址int
private$lastip;//最后一条IP记录的偏移地址int
private$totalip;//IP记录的总条数(不包含版本信息记录)int
/**
*构造函数,打开QQWry.Dat文件并初始化类中的信息
*
*@paramstring$filename
*@returnIpLocation
*/
publicfunction__construct($filename="data/ipdb.Dat"){//////////////////////////////////////////////这里注意,根据你的数据库存放位置不同,把这个数据库进行引入。
$this->fp=0;
if(($this->fp=fopen($filename,'rb'))!==false){
$this->firstip=$this->getlong();
$this->lastip=$this->getlong();
$this->totalip=($this->lastip-$this->firstip)/7;//注册析构函数,使其在程序执行结束时执行
register_shutdown_function(array(&$this,'__destruct'));
}
}
/**
*析构函数,用于在页面执行结束后自动关闭打开的文件。
*
*/
publicfunction__destruct(){
if($this->fp){
fclose($this->fp);
}
$this->fp=0;
}
/**
*返回读取的长整型数
*
*@accessprivate
*@returnint
*/
privatefunctiongetlong(){//将读取的little-endian编码的4个字节转化为长整型数
$result=unpack('Vlong',fread($this->fp,4));
return$result['long'];
}
/**
*返回读取的3个字节的长整型数
*
*@accessprivate
*@returnint
*/
privatefunctiongetlong3(){//将读取的little-endian编码的3个字节转化为长整型数
$result=unpack('Vlong',fread($this->fp,3).chr(0));
return$result['long'];
}
/**
*返回压缩后可进行比较的IP地址
*
*@accessprivate
*@paramstring$ip
*@returnstring
*/
privatefunctionpackip($ip){//将IP地址转化为长整型数,如果在PHP5中,IP地址错误,则返回False,//这时intval将Flase转化为整数-1,之后压缩成big-endian编码的字符串
returnpack('N',intval(ip2long($ip)));
}
/**
*返回读取的字符串
*
*@accessprivate
*@paramstring$data
*@returnstring
*/
privatefunctiongetstring($data=""){
$char=fread($this->fp,1);
while(ord($char)>0){//字符串按照C格式保存,以\0结束
$data.=$char;//将读取的字符连接到给定字符串之后
$char=fread($this->fp,1);
}
return$data;
}
/**
*返回地区信息
*
*@accessprivate
*@returnstring
*/
privatefunctiongetarea(){
$byte=fread($this->fp,1);//标志字节
switch(ord($byte)){
case0://没有区域信息
$area="";
breAK;
case1:
case2://标志字节为1或2,表示区域信息被重定向
fseek($this->fp,$this->getlong3());
$area=$this->getstring();
break;
default://否则,表示区域信息没有被重定向
$area=$this->getstring($byte);
break;
}
return$area;
}
/**
*根据所给IP地址或域名返回所在地区信息
*
*@accesspublic
*@paramstring$ip
*@returnarray
*/
publicfunctionget($ip){
if(!$this->fp)returnnull;//如果数据文件没有被正确打开,则直接返回空
$location['ip']=gethostbyname($ip);//将输入的域名转化为IP地址
$ip=$this->packip($location['ip']);//将输入的IP地址转化为可比较的IP地址
//不合法的IP地址会被转化为255.255.255.255//对分搜索
$l=0;//搜索的下边界
$u=$this->totalip;//搜索的上边界
$findip=$this->lastip;//如果没有找到就返回最后一条IP记录(QQWry.Dat的版本信息)
while($l<=$u){//当上边界小于下边界时,查找失败
$i=floor(($l+$u)/2);//计算近似中间记录
fseek($this->fp,$this->firstip+$i*7);
$beginip=strrev(fread($this->fp,4));//获取中间记录的开始IP地址//strrev函数在这里的作用是将little-endian的压缩IP地址转化为big-endian的格式//以便用于比较,后面相同。
if($ip<$beginip){//用户的IP小于中间记录的开始IP地址时
$u=$i-1;//将搜索的上边界修改为中间记录减一
}else{
fseek($this->fp,$this->getlong3());
$endip=strrev(fread($this->fp,4));//获取中间记录的结束IP地址
if($ip>$endip){//用户的IP大于中间记录的结束IP地址时
$l=$i+1;//将搜索的下边界修改为中间记录加一
}else{//用户的IP在中间记录的IP范围内时
$findip=$this->firstip+$i*7;
break;//则表示找到结果,退出循环
}
}
}//获取查找到的IP地理位置信息
fseek($this->fp,$findip);
$location['beginip']=long2ip($this->getlong());//用户IP所在范围的开始地址
$offset=$this->getlong3();
fseek($this->fp,$offset);
$location['endip']=long2ip($this->getlong());//用户IP所在范围的结束地址
$byte=fread($this->fp,1);//标志字节
switch(ord($byte)){
case1://标志字节为1,表示国家和区域信息都被同时重定向
$countryOffset=$this->getlong3();//重定向地址
fseek($this->fp,$countryOffset);
$byte=fread($this->fp,1);//标志字节
switch(ord($byte)){
case2://标志字节为2,表示国家信息又被重定向
fseek($this->fp,$this->getlong3());
$location['country']=$this->getstring();
fseek($this->fp,$countryOffset+4);
$location['area']=$this->getarea();
break;
default://否则,表示国家信息没有被重定向
$location['country']=$this->getstring($byte);
$location['area']=$this->getarea();
break;
}
break;
case2://标志字节为2,表示国家信息被重定向
fseek($this->fp,$this->getlong3());
$location['country']=$this->getstring();
fseek($this->fp,$offset+8);
$location['area']=$this->getarea();
break;
default://否则,表示国家信息没有被重定向
$location['country']=$this->getstring($byte);
$location['area']=$this->getarea();
break;
}
if($location['country']=="CZ88.NET"){//CZ88.NET表示没有有效信息
$location['country']="未知";
}
if($location['area']=="CZ88.NET"){
$location['area']="";
}
$location['country']=iconv('gbk','utf-8',$location['country']);
$location['area']=iconv('gbk','utf-8',$location['area']);
return$location;
}
}
?>
——————————————
这个类里有个引入数据库的行,需要你进行更改。
接下来,你在需要使用IP数据库的页面中,将这个类引入,并执行下列函数:
$ip=newip_area();
这个类不用传参,自会得到ip的地理位置。
最后,如果你想得到IP值,那么可以使用以下方法:
————————
functionip(){//-------------------------------------------获得用户IP;
if(isset($_SERVER)){
if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$realip=$_SERVER["HTTP_X_FORWARDED_FOR"];
}elseif(isset($_SERVER["HTTP_CLIENT_IP"])){
$realip=$_SERVER["HTTP_CLIENT_IP"];
}else{
$realip=$_SERVER["REMOTE_ADDR"];
}
}else{
if(getenv("HTTP_X_FORWARDED_FOR")){
$realip=getenv("HTTP_X_FORWARDED_FOR");
}elseif(getenv("HTTP_CLIENT_IP")){
$realip=getenv("HTTP_CLIENT_IP");
}else{
$realip=getenv("REMOTE_ADDR");
}
}
return$realip;
}
——————————————————————
纯真ip数据库是做什么用的?怎么用
纯真2113IP数据库是纯真网络(一个企业或网5261络团体)收集的关于4102全国的固定IP地址的一个数据库,会1653不断的随着变化或增加而进行更新,通过这个数据库,你就可以通过QQ或其他网络软件知道某个IP是归属于哪个省哪个市哪个地区,比如你可以知道你的QQ好友是哪个省哪个地区的。
纯真ip数据库用什么软件能打开?
1.运行纯真2113QQIP数据库里带的ShowIP.exe,点解压,输入文5261件4102名,比如1.txt,确定,就得1653到一个TXT文件。
2.打开ACCESS,工具-自定义,命令选项卡,把导入选项拖动到上面的工具栏。
3.建库,建一个表,四个字段
startip16文本
endip16文本
country100文本
local20文本
依次为:字段名,长度,类型
4.点导入按钮,文件类型选文本文件,找到刚才导出的1.txt文件,导入到刚才建的表里~
- 上一篇:21互联 21互联网免费视频教程
- 下一篇:me域名注册 免费域名注册平台
猜你喜欢
你 发表评论:
欢迎- 搜索
- 文章归档
-
- 2021年3月 (5)
- 2020年10月 (2)
- 2020年9月 (3)
- 2020年8月 (6)
- 2020年7月 (33)
- 2020年6月 (42)
- 2020年5月 (41)
- 2020年4月 (46)
- 2020年3月 (51)
- 2020年2月 (81)
- 2020年1月 (69)
- 2019年12月 (100)
- 2019年11月 (98)
- 2019年10月 (82)
- 2019年9月 (113)
- 2019年8月 (55)
- 2019年7月 (52)
- 2019年6月 (5)
- 2019年5月 (39)
- 2019年4月 (36)
- 2019年3月 (103)
- 2019年2月 (49)
- 2019年1月 (107)
- 2018年12月 (39)
- 2018年11月 (8)
- 2018年10月 (57)
- 2018年9月 (10)
- 2018年8月 (27)
- 2018年7月 (13)
- 2018年6月 (61)
- 2018年5月 (21)
- 2018年4月 (46)
- 2018年3月 (7)
- 2018年2月 (12)
- 2018年1月 (40)
- 2017年12月 (50)
- 2017年11月 (39)
- 2017年10月 (36)
- 2017年9月 (34)
- 2017年8月 (30)
- 2017年7月 (143)
- 2017年6月 (41)
- 标签列表
本文暂时没有评论哦(●'◡'●)