您当前的位置: 首页 > 网站编程 > PHP教程 > 解析php根据ip查询所在地区

解析php根据ip查询所在地区

作者:不详 来源:网络 发布时间: 2014-08-14 21:48 点击:
dat文件,关于ip对应地区的信息文件 qqwry.dat文件 网上自己下载 class类文件,解析qqwry.data文件的 IpLocation.php文件 复制代码 代码如下: ?php class IpLocation { /** * @var resource 指针 */ private $fp; /** * 第一条IP记录的偏移地址 * @var int */ private

解析php根据ip查询所在地区

  dat文件,关于ip对应地区的信息文件

  qqwry.dat文件

  网上自己下载

  class类文件,解析qqwry.data文件的

  IpLocation.php文件

  


  复制代码 代码如下:

  <?php

  class IpLocation {

  /**

  * @var resource 指针

  */

  private $fp;

  /**

  * 第一条IP记录的偏移地址

  * @var int

  */

  private $firstip;

  /**

  * 最后一条IP记录的偏移地址

  * @var int

  */

  private $lastip;

  /**

  * IP记录的总条数(不包含版本信息记录)

  * @var int

  */

  private $totalip;

  /**

  * 构造函数,打开 QQWry.Dat 文件并初始化类中的信息

  * @param string $filename

  * @return IpLocation

  */

  public function __construct($filename = "qqwry.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;

  }

  }

  /**

  * 返回读取的长整型数

  * @access private

  * @return int

  */

  public function getlong() {

  //将读取的little-endian编码的4个字节转化为长整型数

  $result = unpack('Vlong', fread($this->fp, 4));

  return $result['long'];

  }

  /**

  * 返回读取的3个字节的长整型数

  *

  * @access private

  * @return int

  */

  public function getlong3() {

  //将读取的little-endian编码的3个字节转化为长整型数

  $result = unpack('Vlong', fread($this->fp, 3).chr(0));

  return $result['long'];

  }

  /**

  * 返回压缩后可进行比较的IP地址

  *

  * @access private

  * @param string $ip

  * @return string

  */

  public function packip($ip) {

  // 将IP地址转化为长整型数,如果在PHP5中,IP地址错误,则返回False,

  // 这时intval将Flase转化为整数-1,之后压缩成big-endian编码的字符串

  return pack('N', intval(ip2long($ip)));

  }

  /**

  * 返回读取的字符串

  *

  * @access private

  * @param string $data

  * @return string

  */

  public function getstring($data = "") {

  $char = fread($this->fp, 1);

  while (ord($char) > 0) { // 字符串按照C格式保存,以
分享到:
本文"解析php根据ip查询所在地区"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4