打开一个php网页出现2个ip,php根据ip地址查地区

2023-10-27

自己以前做过一个程序 根据discuz里面的ip查询改的

/**

* ip地址所属地区计算

* 修改自 discuz

* 使用dicuz tinyipdata数据文件

* 将一些英文提示修改为汉字

* $is_simple true的话显示到市 false显示到网通电信等等

******/

function convertip($ip,$is_simple=true,$ipfile='include/data/ip。

dat') {

$return = '';

if( !file_exists($ipfile) ) $ipfile = '。。/'。$ipfile;

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] 255 || $iparray[1] > 255 || $iparray[2] > 255 || $iparray[3] > 255) {

return 'ERR';

} elseif($is_simple) {

return change_simply_area(convertip_tiny($ip, $ipfile));

}

else {

return convertip_tiny($ip, $ipfile);

}

}

}

/**

* 从ip文件得到ip所属地区

*

* 过滤掉了具体的位置(如 网通/电信/**网吧) 基本到市

***/

function convertip_tiny($ip, $ipdatafile) {

static $fp = NULL, $offset = array(), $index = NULL;

$ipdot = explode('。

', $ip);

$ip = pack('N', ip2long($ip));

$ipdot[0] = (int)$ipdot[0];

$ipdot[1] = (int)$ipdot[1];

if($fp === NULL && $fp = @fopen($ipdatafile, 'rb')) {

$offset = unpack('Nlen', fread($fp, 4));

$index = fread($fp, $offset['len'] - 4);

} elseif($fp == FALSE) {

return '- Invalid IP data file';

}

$length = $offset['len'] - 1028;

$start = unpack('Vlen', $index[$ipdot[0] * 4] 。

$index[$ipdot[0] * 4 1] 。 $index[$ipdot[0] * 4 2] 。 $index[$ipdot[0] * 4 3]);

for ($start = $start['len'] * 8 1024; $start = $ip) {

$index_offset = unpack('Vlen', $index{$start 4} 。

$index{$start 5} 。 $index{$start 6} 。 "x0");

$index_length = unpack('Clen', $index{$start 7});

break;

}

}

fseek($fp, $offset['len'] $index_offset['len'] - 1024);

if($index_length['len']) {

return mb_convert_encoding(fread($fp, $index_length['len']),'utf-8','gb2312'); //将读出的gb编码数据转成utf-8并返回

} else {

return '未知';

}

}

function change_simply_area($area) {

$tmp = explode(' ',$area); //过滤掉一些具体信息

return $tmp[0];

}

里面那个ipfile你可以去下载一个discuz 在 ipdata目录里面有wry。

dat的文件就是了 其实这个就是网上用的最多的那个纯真版数据库 很多显示ip的qq用的也是那个

这两个函数的原型参考 discuz 里面 includemisc。func。php

共同学习进步 :)。

全部

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打开一个php网页出现2个ip,php根据ip地址查地区 的相关文章

  • 特征工程(四)HashingVectorizer

    将原始数据的word特征数字化为hash特征 并将结果保存到本地 article特征可做类似处理 import pandas as pd from sklearn feature extraction text import Hashing
  • SDNE(Structural Deep Network Embedding )的原理,实现与应用

    文章目录 SDNE基本思想 二阶相似度 无监督 一阶相似度 有监督 核心代码 库实现 应用 阿里凑单算法 SDNE基本思想 SDNE Structural Deep Network Embedding 主要目标是保持网络的一阶相似性和二阶相
  • Unity小地图的放大缩小

    继续承接上篇内容 本篇讲述小地图的放大和缩小功能 如下图 点击 按钮可以放大地图 点击 按钮可以缩小地图 更多内容关注 unity风雨路 上一篇中我们已经讲过小地图的UI结构图 此处不再赘述 如图 我们只需在此基础上给 符号等image图全
  • Linux下C++定时器的使用

    LInux下C 定时器的使用 include
  • 图像分类之花卉图像分类(一)数据增强

    网上有很多图像分类的代码 有很多是必须要在GPU上面才能跑的 因为我想在自己的电脑跑 所以很多都是不能用的 而且说实话很多对我这个小白来说 都很难看懂 所以我找了一个就是之间用CNN写的神经卷积模型用来进行花卉识别 其中主要参考了以下的博主
  • Stable Diffusion 安装

    一 安装 GPU 驱动 CPU 环境跳过这一步 手动安装GPU驱动参考 https docs nvidia com datacenter tesla tesla installation notes index html spm a2c4g
  • 单元测试中测试用例的设计示例

    对于多个输入的被测试模块 可以通过正交排列和正交表选取具有代表性的测试用例 模块代码如下 int mySum int a int b int c int aa bb cc if a lt 0 aa 0 else aa 1 if b lt 1
  • id 怎么获取jira 评论_如何获取抖音、快手、微视等短视频快速吸粉

    很多朋友不知道如何获取短视频平台ID 下行我来详细为大家讲解一下 如果看了还不懂的朋友 或者需要在以下快速出效果的朋友可以 喂aabb ccnn 就好了 S粉 你懂的 1 抖音 点赞时如何正确获取抖音ID 虽然说抖音刷粉丝可以使用用户ID来
  • Spark Core笔记

    Spark Core笔记 Spark 一 What is Spark Apache Spark is a fast and general engine for large scale data processing 二 Spark框架优势
  • 一道华为的笔试题

    刚做了一道华为的笔试题 不是很理想 因为审题审了将近半小时 题目写的有点弯弯绕绕的 读了半天才读懂 现把题目附上 希望能给大家一点帮助 博主很不服气 感觉是败在了语文的阅读理解上 1 题目 对一个数据a进行分类 分类方法为 此数据a 四个字
  • 用Openswan组建Linux IPSec ---第一部分

    用Openswan组建Linux IPSec Linux下建立IPSEC的vpn第一部分 1 概述 2 安装Openswan 3 认证和配置 3 1 RSAsig认证方式的配置 3 2 x 509证书认证的配置 3 3 RoadWarrio
  • 设计模式--单例模式

    单例模式是最容易的设计模式了 但是用得非常多 我在项目中接触的一个就是单例模式 单例模式的适用范围 单例模式适合于一个类只有一个实例的情况 比如窗口管理器 打印缓冲池和文件系统 它们都是原型的例子 典型的情况是 那些对象的类型被遍及一个软件
  • OkHttp的用法和高效配置

    转载请声明来自http blog csdn net super kingking article details 70992012 现在OkHttp越来越火 并伴随着RxJava Retrofit的组合 功能非常的强大 使其越受开发者的关注
  • 浅谈学习C语言第一天的感受及对编程未来目标规划

    我是一个大学计算机专业的学生 在之前学过一些Python 由于升学原因 需要学习C语言 所以在暑假期间开始自学一些关于C语言的知识和内容对于C语言 个人认为动手实践是非常重要的 毕竟编程是一个需要多动手练习 对于代码我从先学习模仿 等后面在
  • vue事件

    event click testEvent event testEvent e console log e e srcElement style background red e srcElement表示当前元素 事件冒泡 原生js中的组织
  • anaconda3 安装mysql的包

    python3 安装步骤 step 1 下载python3版本的包 mysqlclient cp37 cp37m win amd64 whl 下载cp3开头的文件 step 2 使用cmd切入anaconda的安装目录 如 D Anacon
  • Xcode - 使用 chisel 提高 LLDB 调试效率

    源链接 https viktyz gitbooks io iosnotebook gitbook Notes Note 00129 20160108 html 方案名称 Xcode 使用 chisel 提高 LLDB 调试效率 关键字 Xc
  • Pytorch中contiguous()函数理解

    引言 在pytorch中 只有很少几个操作是不改变tensor的内容本身 而只是重新定义下标与元素的对应关系的 换句话说 这种操作不进行数据拷贝和数据的改变 变的是元数据 会改变元数据的操作是 narrow view expand tran
  • oracle 查出一个表中字段值出现次数大于2的所有记录

    表web order 列 name businesscode a account 周桥 18929609222 3754031157710000妙药 18929609233 3754031157712344灵丹 18929609189 37

随机推荐

  • V2X车联网-学习整理笔记

    一致性测试预备条件 1 具备WIFI或者LAN通信能力 2 具备GNSS能力 能够获取设备经纬度以及授时 3 具备RF通信能力 aid为应用标识 应用标识分配如下 111 普通车辆状态 112 普通车辆关键事件提醒 113 紧急车辆状态 1
  • 服务器维护 文档,ERP系统维护服务器维护管理文档.docx

    文档介绍 ERP系统机箱及办事器治理维护文档 作者 数据技能组 创建日期 2013 05 08 修他日期 版本 1 0 目录 目录 2 编写说明 3 使用东西 4 参考文档 4 图标说明 4 治理维护界面详细说明 5 治理维护界面的进入 6
  • gedit注释快捷建 ctrl+m

    sudo apt get install gedit plugins 安装gedit 插件 终端输入gedit命令 打开gedit 最后把code comment勾上 重启机器就可以使用Ctrl M注释了 Ctrl N 新开一个窗口新建文档
  • PyFlink使用说明:建表及连接Mysql数据库

    PyFlink1 16 0 使用说明 建表及连接Mysql数据库 引言 安装运行环境 PyFlink创建作业环境 一 创建一个 Table API 批处理表环境 二 创建一个 Table API 流处理表环境 三 创建一个 DataStre
  • css3 文本超出容器后显示...以及超出几行后显示...

    前言 好记性不如烂笔头 记录一下自己常用的css样式 一 文本超出容器后显示 div class ellipsis main 国际酒店政策国际酒店政策国际酒店政策国际酒店政策国际酒店政策 div ellipsis main width 10
  • error: The following untracked working tree files would be overwritten by checkout:

    1 可以使用 git status 查看什么情况 2 原因可能是这些变化没有提交 根据git status 的提醒 可以提交 然后就可以切换分支了 3 git checkout 你想切换的分支
  • 电商平台怎么搭建

    越来越多商家致力于搭建并运营自己的私域电商平台 大家都清楚了解拥有自己电商平台的好处 有利于品牌的塑造与提升 提高品牌曝光度和认知度 提高客户黏性 降低渠道成本 乔拓云平台模板式搭建电商平台 方法简单实用 适合电脑零基础的朋友自己搭建 通过
  • rv1126如何切换720p和1080p

    切换720p和1080p可以使用modetest 但是需要将这两种模式都添加到connector中去 添加一个新的mode到connector中去 其实内核中已经有相关接口了 需要做一些小改动 1 不采用设备树的方式去配置 将720p和10
  • 聚水潭无需API开发连接伙伴云,实现新增订单信息自动同步到表单汇总

    聚水潭用户使用场景 电商行业通常使用聚水潭作为企业的ERP系统 然而 每当聚水潭产生新订单时 企业人员常常需要将订单信息手动复制并录入到伙伴云存储 汇总 包括订单单号 状态 金额等20多项信息 这种人工手动复制和录入的方式容易导致订单数据出
  • C++知识框架梳理

    封装 继承 多态被称为面向对象的三大法宝 一 封装 1 类 a 如何创建自己的类 形式如下 class student 类名 student string name 类里面两个内容 年龄名字 叫做类的成员数据 也叫作属性 int age 早
  • Android码农是如何进入腾讯的,Flutter全方位深入探索

    正式加入字节跳动 分享一点面试小经验 今天正式入职了字节跳动 工号超吉利 尾数是3个6 然后办公环境也很好 这边一栋楼都是办公区域 公司内部配备各种小零食 饮料 还有免费的咖啡 15楼还有健身房 而且公司包三餐来着 下午三点半左右还会有阿姨
  • STM32关于定时器输出多路PWM波的持续跟进

    简介 这里简单用stm32产生多路PWM 1 32的通用定时器3可以产生4路PWM输出 同频率 不同占空比 2 一个定时器产生的PWM频率由定时器输入频率决定 时钟树决定通用定时器时钟来自APB1 且如果APB1的分频为1的话 定时器时钟为
  • 抽象类 接口

    1 抽象类 public abstract class AbstractClass 里面至少有一个抽象方法 public int t 普通数据成员 public abstract void method1 抽象方法 抽象类的子类在类中必须实
  • 功率时延谱(PDP)与三种选择性衰落

    衰落与弥散是无线信道的基本特性 电磁波经过无线信道传输后会使原本的信号在时域 频域 空域 角度 上产生弥散现象 导致波形在时间 频谱 空间上产生交叠 引起信号的失真 多径效应在时域上引起信号时延扩展 在频域上定义了相关带宽指标 当信号带宽大
  • k8s调度 原理_深入剖析k8s之默认调度器调度策略解析

    本篇专注在调度过程中 Predicates 和 Priorities 这两个调度策略主要发生作用的阶段 Predicates 首先 我们一起看看 Predicates Predicates 在调度过程中的作用 可以理解为 Filter 即
  • 如何使用nfsiostat来分析nfs存储性能问题

    nfsiostat介绍 Sysstat家族包括一个名叫nfsiostat的实用程序 它和iostat有诸多类似之处 它允许你监控NFS文件系统上的读写情况 其用法也和iostat类似 最基本的命令用法是跟上几个参数和两个数字 这两个数字分别
  • vue父子组件传值,父组件内容更新子组件内容不实时更新

    背景 vue父子组件传值不能实时更新问题 父组件将值传给了子组件 但子组件显示的值还是原来的初始值 并没有实时更新 总结了以下三种情况及解决方案 1 子组件没有正确监听父组件传递的值 在子组件中 确保正确地声明了props 并且监听了父组件
  • CVPR2023论文汇总

    点击下方卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 全栈算法 技术交流群 CVPR2023中稿paper已经陆续放出来了 自动驾驶之心团队为大家整理了计算机视觉 BEV 分割 Occpuancy v
  • Vue的插槽与作用域插槽详解

    在Vue中 插槽 Slot 是一个非常强大且灵活的特性 用于在父组件中定义子组件的内容 Vue提供了两种主要类型的插槽 默认插槽 Slot 和作用域插槽 Scoped Slot 本篇博文将深入介绍这两种插槽类型 从基础到进阶 默认插槽 Sl
  • 打开一个php网页出现2个ip,php根据ip地址查地区

    自己以前做过一个程序 根据discuz里面的ip查询改的 ip地址所属地区计算 修改自 discuz 使用dicuz tinyipdata数据文件 将一些英文提示修改为汉字 is simple true的话显示到市 false显示到网通电信