PHP如何判断IP并转跳到相应城市分站
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章将为大家详细讲解有关PHP如何判断IP并转跳到相应城市分站,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体实现方法如下:
千家信息网最后更新 2025年11月07日PHP如何判断IP并转跳到相应城市分站
这篇文章将为大家详细讲解有关PHP如何判断IP并转跳到相应城市分站,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
具体实现方法如下:
FirstStartIp+$RecNo * 7 ; @fseek($this->fp,$offset,SEEK_SET) ; $buf=fread($this->fp ,7) ; $this->EndIpOff=ord($buf[4])+(ord($buf[5])*256)+(ord($buf[6])*256*256); $this->StartIp=ord($buf[0])+(ord($buf[1])*256)+(ord($buf[2])*256*256)+(ord($buf[3])*256*256*256); return $this->StartIp; } function getEndIp(){ @fseek ( $this->fp , $this->EndIpOff , SEEK_SET ) ; $buf=fread ( $this->fp , 5 ) ; $this->EndIp=ord($buf[0]) + (ord($buf[1])*256) + (ord($buf[2])*256*256) + (ord($buf[3])*256*256*256); $this->CountryFlag=ord ( $buf[4] ) ; return $this->EndIp ; } function getCountry(){ switch ( $this->CountryFlag ) { case 1: case 2: $this->Country=$this->getFlagStr ( $this->EndIpOff+4) ; //echo sprintf('EndIpOffset=(%x)',$this->EndIpOff ); $this->Local=( 1 == $this->CountryFlag )? '' : $this->getFlagStr ( $this->EndIpOff+8); break ; default : $this->Country=$this->getFlagStr ($this->EndIpOff+4); $this->Local=$this->getFlagStr ( ftell ( $this->fp )); } } function getFlagStr ($offset){ $flag=0 ; while(1){ @fseek($this->fp ,$offset,SEEK_SET) ; $flag=ord(fgetc($this->fp ) ) ; if ( $flag == 1 || $flag == 2 ) { $buf=fread ($this->fp , 3 ) ; if ($flag==2){ $this->CountryFlag=2; $this->EndIpOff=$offset - 4 ; } $offset=ord($buf[0]) + (ord($buf[1])*256) + (ord($buf[2])* 256*256); } else{ break ; } } if($offset<12) return ''; @fseek($this->fp , $offset , SEEK_SET ) ; return $this->getStr(); } function getStr ( ) { $str='' ; while ( 1 ) { $c=fgetc ( $this->fp ) ; //echo "$cn" ; if(ord($c[0])== 0 ) break ; $str.= $c ; } //echo "$str n"; return $str ; } function qqwry ($dotip='') { if( !is_string($dotip) || $dotip==''){return;} if(preg_match("/^127/",$dotip)){$this->Country="本地网络";return ;} elseif(preg_match("/^192/",$dotip)) {$this->Country="局域网";return ;} $nRet; $ip=$this->IpToInt ( $dotip ); $this->fp= fopen(__QQWRY__, "rb"); if ($this->fp == NULL) { $szLocal= "OpenFileError"; return 1; } @fseek ( $this->fp , 0 , SEEK_SET ); $buf=fread ( $this->fp , 8 ); $this->FirstStartIp=ord($buf[0]) + (ord($buf[1])*256) + (ord($buf[2])*256*256) + (ord($buf[3])*256*256*256); $this->LastStartIp=ord($buf[4]) + (ord($buf[5])*256) + (ord($buf[6])*256*256) + (ord($buf[7])*256*256*256); $RecordCount= floor(($this->LastStartIp - $this->FirstStartIp) / 7); if ($RecordCount <= 1){ $this->Country="FileDataError"; fclose($this->fp) ; return 2 ; } $RangB= 0; $RangE= $RecordCount; // Match ... while ($RangB < $RangE-1) { $RecNo= floor(($RangB + $RangE) / 2); $this->getStartIp ( $RecNo ) ; if ( $ip == $this->StartIp ) { $RangB=$RecNo ; break ; } if ($ip>$this->StartIp) $RangB= $RecNo; else $RangE= $RecNo; } $this->getStartIp ( $RangB ) ; $this->getEndIp ( ) ; if ( ( $this->StartIp <= $ip ) && ( $this->EndIp >= $ip ) ){ $nRet=0 ; $this->getCountry ( ) ; //这样不太好..............所以.......... $this->Local=str_replace("area error", "",$this->Local); } else{ $nRet=3 ; $this->Country='未知' ; $this->Local='' ; } fclose ( $this->fp ); $this->Country=preg_replace("/(CZ88.NET)|(纯真网络)/","局域网/未知",$this->Country);$this->Local=preg_replace("/(CZ88.NET)|(纯真网络)/","局域网/未知",$this->Local); //////////////看看 $nRet在上面的值是什么0和3,于是将下面的行注释掉 return $nRet ; //return "$this->Country $this->Local";#如此直接返回位置和国家便可以了 } function IpToInt($Ip) { $array=explode('.',$Ip); $Int=($array[0] * 256*256*256) + ($array[1]*256*256) + ($array[2]*256) + $array[3]; return $Int; } } ?>实例演示如下:
$QQWry=new QQWry;$QQWry->QQWry("60.31.95.255");$country = $QQWry->Country;echo $QQWry->Country.",".$QQWry->Local;关于"PHP如何判断IP并转跳到相应城市分站"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
局域
局域网
篇文章
网络
分站
城市
纯真
更多
面的
不错
实用
位置
内容
国家
实例
文章
方法
注释
知识
参考
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
天津垃圾发电厂网络安全
网络安全重点岗位责任书
网贷软件开发怎么判
天津特色软件开发供应商
深圳市驰鸿网络技术有限公司
pubg选什么服务器比较好
徐工办公云服务器端口
高性价比服务器费用
计算机软件开发的杂志
外网远程服务器
肇庆服务软件开发设计
在线翻译app软件开发
面试网络安全岗
网络安全 关非
网络安全的保护对象
视频网络安全产品
为什么有数据库最左优先原则
奉贤区个性化软件开发项目信息
如何获得上级网络服务器ip
校园网络安全手抄报初二
网络安全漏洞技术有哪些
软件开发中的各个活动
酒店信息管理数据库设计
滨州水道蕖互联网科技有限公司
数据库主从 集群
软件测试为什么要用数据库校验
艺电能源互联网科技有限公司招聘
服务器主板用什么牌子的好
数据通信与网络技术问题
讯虎网络技术