加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

利用?QQWry.Dat?实现?IP?地址高效检索(PHP)

发布时间:2020-12-13 14:12:05 所属栏目:PHP教程 来源:网络整理
导读:根据 LumaQQ 开发者文档中的纯真 IP 数据库格式详解,我编写了一个 PHP 的查询 IP 所在地区信息的类。在编写过程中发现纯真 IP 数据库格式详解中关于记录区的描述不是很全面,不过出入也不是很大,所以我没必要再写一份纯真 IP 数据库的格式说明了,大家感兴

根据 LumaQQ 开发者文档中的纯真 IP 数据库格式详解,我编写了一个 PHP 的查询 IP 所在地区信息的类。在编写过程中发现纯真 IP 数据库格式详解中关于记录区的描述不是很全面,不过出入也不是很大,所以我没必要再写一份纯真 IP 数据库的格式说明了,大家感兴趣的话,读一读下面的代码应该就能看出来了。代码中加了很详细的注释,应该很容易读懂的。

在创建这个类的一个实例后,实例中就保存了打开的文件指针和一些查询需要的信息,每次查询时不需要重新打开文件,直到页面执行结束后,打开的文件才会自动关闭。这样。在一个页面内进行多次查询时,效率是很高的。并且此类不仅可以直接查询 IP,还可以自动将域名解析为 IP 进行查询。

下面是程序代码:

  1. <?php
  2. /**
  3. * IP 地理位置查询类
  4. *
  5. * @author 马秉尧
  6. * @version 1.5
  7. * @copyright 2005 CoolCode.CN
  8. */
  9. class?IpLocation {
  10. ? ? ? ?? * QQWry.Dat文件指针
  11. ? ?? *
  12. ? ?? * @var resource
  13. ? ?? */
  14. ? ? var?$fp;
  15. ? ? ? ?? * 第一条IP记录的偏移地址
  16. int
  17. $firstip;
  18. ? ? ? ?? * 最后一条IP记录的偏移地址
  19. $lastip;
  20. ? ? ? ?? * IP记录的总条数(不包含版本信息记录)
  21. $totalip;
  22. ? ? ? ?? * 返回读取的长整型数
  23. ? ?? * @access private
  24. ? ?? * @return ? ?? */
  25. ? ? function?getlong() {
  26. ? ? ? ? //将读取的little-endian编码的4个字节转化为长整型数
  27. ? ? ? ? $result = unpack('Vlong',fread($this->fp,4));
  28. ? ? ? ? return?$result['long'];
  29. ? ? }
  30. ? ? ? ?? * 返回读取的3个字节的长整型数
  31. ? ?? */
  32. ? ? function?getlong3() {
  33. ? ? ? ? //将读取的little-endian编码的3个字节转化为长整型数
  34. ? ? ? ? 3).chr(0));
  35. ? ? ? ? return?? ?? * 返回压缩后可进行比较的IP地址
  36. ? ?? * @param string $ip
  37. string
  38. ? ?? */
  39. ? ? function?packip($ip) {
  40. ? ? ? ? // 将IP地址转化为长整型数,如果在PHP5中,IP地址错误,则返回False,
  41. ? ? ? ? // 这时intval将Flase转化为整数-1,之后压缩成big-endian编码的字符串
  42. ? ? ? ? return?pack('Nintval(ip2long($ip)));
  43. ? ? }
  44. ? ? ? ?? * 返回读取的字符串
  45. string $data
  46. ? ?? */
  47. ? ? function?getstring($data = "") {
  48. ? ? ? ? $char = fread(1);
  49. ? ? ? ? while?(ord($char) > 0) {? ? ? ? // 字符串按照C格式保存,以

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读