好东西不私藏,大家一起分享!爱站云 用心做
广告位 后台主题配置管理

网站首页 爱站云资源网 值得一看 正文

ip纯真数据库 纯真ip什么意思

爱站云 2020-08-04 值得一看 0 评论

  就是一个可以查询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文件,导入到刚才建的表里~

< 爱站云SEO >
本站所有文章,未经允许一律不允许转载,违者后果自负
本站为SEO教学博客,学到东西应该懂得感恩作者 无脑喷子永封IP段+删帐号所有评论
本站部分文章存在于网上收集,如侵犯您的权利,请告知管理员,我们会及时删除,并向您赔礼道歉.

酷站网爱站云 官方QQ群:333914614


猜你喜欢

本文暂时没有评论哦(●'◡'●)

欢迎 发表评论:

温馨提示:(登陆后才可以评论哦!点我QQ登录哦,若已登录请忽略)。
«   2021年5月   »
12
3456789
10111213141516
17181920212223
24252627282930
31
网站分类
搜索
最新留言
文章归档
标签列表