讲师中心 微信公众号
AI工具推荐 视频效率加速

php 根据IP显示地区代码

夏辰小哥_1351

夏辰小哥_1351

发布时间:2016-06-08 17:29:45

|

1744人浏览过

|

来源于php中文网

原创

php 根据IP显示地区代码

<script>ec(2);</script>


define('IPDATA_MINI', PHPCMS_ROOT.'include/ipdata/mini.Dat');
define('IPDATA_FULL', PHPCMS_ROOT.'include/ipdata/QQWry.Dat');

class ip_area
{
 var $fp = NULL;
 var $func;
 var $offset;
 var $index;

 function ip_area()
 {
  if(@file_exists(IPDATA_MINI))
  {
   $this->func = 'data_mini';
   $this->fp = @fopen(IPDATA_MINI, 'rb');
   $this->offset = unpack('Nlen', fread($this->fp, 4));
   $this->index  = fread($this->fp, $this->offset['len'] - 4);
  }
  elseif(@file_exists(IPDATA_FULL))
  {
   $this->func = 'data_full';
   $this->fp = @fopen(IPDATA_FULL, 'rb');
  }
 }

 function get($ip)
 {
  $return = '';
  if(preg_match("/^d{1,3}.d{1,3}.d{1,3}.d{1,3}$/", $ip))
  {
   $iparray = explode('.', $ip);
   if($iparray[0] == 10 || $iparray[0] == 127 || ($iparray[0] == 192 && $iparray[1] == 168) || ($iparray[0] == 172 && ($iparray[1] >= 16 && $iparray[1]    {
    $return = 'LAN';
   }
   elseif($iparray[0] > 255 || $iparray[1] > 255 || $iparray[2] > 255 || $iparray[3] > 255)
   {
    $return = 'Invalid IP Address';
   }
   else
   {
    $return = $this->func ? $this->{$this->func}($ip) : '';
    if(strpos($return, ' ') !== false) $return = substr($return, 0, strpos($return,' '));
   }
   if(strtolower(CHARSET) == 'utf-8') $return = iconv('gbk', 'utf-8', $return);
  }
  return $return;
 }

 function data_mini($ip)
 {
  $ipdot = explode('.', $ip);
  $ipdot[0] = (int)$ipdot[0];
  $ipdot[1] = (int)$ipdot[1];
  $ip    = pack('N', ip2long($ip));
  $length = $this->offset['len'] - 1028;
  $start  = unpack('Vlen', $this->index[$ipdot[0] * 4] . $this->index[$ipdot[0] * 4 + 1] . $this->index[$ipdot[0] * 4 + 2] . $this->index[$ipdot[0] * 4 + 3]);
  for($start = $start['len'] * 8 + 1024; $start   {
   if($this->index{$start} . $this->index{$start + 1} . $this->index{$start + 2} . $this->index{$start + 3} >= $ip)
   {
    $this->index_offset = unpack('Vlen', $this->index{$start + 4} . $this->index{$start + 5} . $this->index{$start + 6} . "x0");
    $this->index_length = unpack('Clen', $this->index{$start + 7});
    break;
   }
  }
  fseek($this->fp, $this->offset['len'] + $this->index_offset['len'] - 1024);
  if($this->index_length['len'])
  {
   return str_replace('- ', '', fread($this->fp, $this->index_length['len']));
  }
  else
  {
   return 'Unknown';
  }
 }

 function data_full($ip)
 {
  rewind($this->fp);
  $ip = explode('.', $ip);
  $ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];
  if(!($DataBegin = fread($this->fp, 4)) || !($DataEnd = fread($this->fp, 4)) ) return;
  @$ipbegin = implode('', unpack('L', $DataBegin));
  if($ipbegin   @$ipend = implode('', unpack('L', $DataEnd));
  if($ipend   $ipAllNum = ($ipend - $ipbegin) / 7 + 1;
  $BeginNum = $ip2num = $ip1num = 0;
  $ipAddr1 = $ipAddr2 = '';
  $EndNum = $ipAllNum;
  while($ip1num > $ipNum || $ip2num   {
   $Middle= intval(($EndNum + $BeginNum) / 2);
   fseek($this->fp, $ipbegin + 7 * $Middle);
   $ipData1 = fread($this->fp, 4);
   if(strlen($ipData1)    {
    fclose($this->fp);
    return 'System Error';
   }
   $ip1num = implode('', unpack('L', $ipData1));
   if($ip1num    if($ip1num > $ipNum)
   {
    $EndNum = $Middle;
    continue;
   }
   $DataSeek = fread($this->fp, 3);
   if(strlen($DataSeek)    {
    fclose($this->fp);
    return 'System Error';
   }
   $DataSeek = implode('', unpack('L', $DataSeek.chr(0)));
   fseek($this->fp, $DataSeek);
   $ipData2 = fread($this->fp, 4);
   if(strlen($ipData2)    {
    fclose($this->fp);
    return 'System Error';
   }
   $ip2num = implode('', unpack('L', $ipData2));
   if($ip2num    if($ip2num    {
    if($Middle == $BeginNum)
    {
     fclose($this->fp);
     return 'Unknown';
    }
    $BeginNum = $Middle;
   }
  }
  $ipFlag = fread($this->fp, 1);
  if($ipFlag == chr(1))
  {
   $ipSeek = fread($this->fp, 3);
   if(strlen($ipSeek)    {
    fclose($this->fp);
    return 'System Error';
   }
   $ipSeek = implode('', unpack('L', $ipSeek.chr(0)));
   fseek($this->fp, $ipSeek);
   $ipFlag = fread($this->fp, 1);
  }
  if($ipFlag == chr(2))
  {
   $AddrSeek = fread($this->fp, 3);
   if(strlen($AddrSeek)    {
    fclose($this->fp);
    return 'System Error';
   }
   $ipFlag = fread($this->fp, 1);
   if($ipFlag == chr(2)) {
    $AddrSeek2 = fread($this->fp, 3);
    if(strlen($AddrSeek2)     {
     fclose($this->fp);
     return 'System Error';
    }
    $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
    fseek($this->fp, $AddrSeek2);
   }
   else
   {
    fseek($this->fp, -1, SEEK_CUR);
   }
   while(($char = fread($this->fp, 1)) != chr(0))
   $ipAddr2 .= $char;
   $AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));
   fseek($this->fp, $AddrSeek);
   while(($char = fread($this->fp, 1)) != chr(0))
   $ipAddr1 .= $char;
  }
  else
  {
   fseek($this->fp, -1, SEEK_CUR);
   while(($char = fread($this->fp, 1)) != chr(0))
   $ipAddr1 .= $char;
   $ipFlag = fread($this->fp, 1);
   if($ipFlag == chr(2))
   {
    $AddrSeek2 = fread($this->fp, 3);
    if(strlen($AddrSeek2)     {
     fclose($this->fp);
     return 'System Error';
    }
    $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
    fseek($this->fp, $AddrSeek2);
   }
   else
   {
    fseek($this->fp, -1, SEEK_CUR);
   }
   while(($char = fread($this->fp, 1)) != chr(0))
   $ipAddr2 .= $char;
  }
  if(preg_match('/http/i', $ipAddr2)) $ipAddr2 = '';
  $ipaddr = "$ipAddr1 $ipAddr2";
  $ipaddr = preg_replace('/CZ88.NET/is', '', $ipaddr);
  $ipaddr = preg_replace('/^s*/is', '', $ipaddr);
  $ipaddr = preg_replace('/s*$/is', '', $ipaddr);
  if(preg_match('/http/i', $ipaddr) || $ipaddr == '') $ipaddr = 'Unknown';
  return ''.$ipaddr;
 }

 function close()
 {
  @fclose($this->fp);
 }
}
?>

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

相关专题

更多
LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

0

2026.09.30

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

0

2026.09.30

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

0

2026.09.30

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

0

2026.09.30

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

0

2026.09.29

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

200

2026.09.23

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

120

2026.09.23

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

100

2026.09.23

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

60

2026.09.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
JavaScript高级框架设计视频教程
JavaScript高级框架设计视频教程

共22课时 | 4.3万人学习

AngularJS教程
AngularJS教程

共24课时 | 7.6万人学习

CSS3实现按钮特效视频教程
CSS3实现按钮特效视频教程

共15课时 | 3.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn