Example #1
0
 /**
  * 获取ip对应的地区
  * @param $ip ip
  */
 public static function get($ip)
 {
     $ip = self::IpToInt($ip);
     if (self::$fp == NULL) {
         die('can not find qqwry.dat...');
     }
     fseek(self::$fp, 0, SEEK_SET);
     $buf = fread(self::$fp, 8);
     self::$FirstStartIp = ord($buf[0]) + ord($buf[1]) * 256 + ord($buf[2]) * 256 * 256 + ord($buf[3]) * 256 * 256 * 256;
     self::$LastStartIp = ord($buf[4]) + ord($buf[5]) * 256 + ord($buf[6]) * 256 * 256 + ord($buf[7]) * 256 * 256 * 256;
     $RecordCount = floor((self::$LastStartIp - self::$FirstStartIp) / 7);
     if ($RecordCount <= 1) {
         self::$Country = 'FileDataError';
         fclose(self::$fp);
     }
     $RangB = 0;
     $RangE = $RecordCount;
     while ($RangB < $RangE - 1) {
         $RecNo = floor(($RangB + $RangE) / 2);
         self::getStartIp($RecNo);
         if ($ip == self::$StartIp) {
             $RangB = $RecNo;
             break;
         }
         if ($ip > self::$StartIp) {
             $RangB = $RecNo;
         } else {
             $RangE = $RecNo;
         }
     }
     self::getStartIp($RangB);
     self::getEndIp();
     if (self::$StartIp <= $ip && self::$EndIp >= $ip) {
         self::getCountry();
         self::$Local = str_replace('我们一定要解放台湾!!!', '', self::$Local);
         self::$Local = str_replace('CZ88.NET', '', self::$Local);
     } else {
         self::$Country = '未知';
         self::$Local = '';
         self::$Local = str_replace('CZ88.NET', '', self::$Local);
     }
     fclose(self::$fp);
     return self::$Country . self::$Local;
 }