PHP推断IP并转跳到相应城市分站的方法_

上传人:一** 文档编号:24874146 上传时间:2021-07-15 格式:DOCX 页数:9 大小:13.45KB
返回 下载 相关 举报
PHP推断IP并转跳到相应城市分站的方法__第1页
第1页 / 共9页
PHP推断IP并转跳到相应城市分站的方法__第2页
第2页 / 共9页
PHP推断IP并转跳到相应城市分站的方法__第3页
第3页 / 共9页
点击查看更多>>
资源描述
PHP推断IP并转跳到相应城市分站的方法_ 这篇文章主要介绍了PHP推断IP并转跳到相应城市分站的方法,实例分析了php解析URL及跳转的技巧,具有肯定参考借鉴价值,需要的伴侣可以参考下 本文实例讲解并描述了PHP推断IP并转跳到相应城市分站的方法。分享给大家供大家参考。具体实现方法如下: ?php class Wry var $StartIP=0; var $EndIP=0; var $Country=; var $Local=; var $CountryFlag=0; / 标识 Country位置 / 0x01,随后3字节为Country偏移,没有Local / 0x02,随后3字节为Country偏移,接着是Local / 其他,Country,Local,Local有类似的压缩。可能多重引用。 var $fp; var $FirstStartIp=0; var $LastStartIp=0; var $EndIpOff=0 ; function getStartIp($RecNo) $offset=$this-FirstStartIp+$RecNo * 7 ; fseek($this-fp,$offset,SEEK_SET) ; $buf=fread($this-fp ,7) ; $this-EndIpOff=ord($buf4)+(ord($buf5)*256)+(ord($buf6)*256*256); $this-StartIp=ord($buf0)+(ord($buf1)*256)+(ord($buf2)*256*256)+(ord($buf3)*256*256*256); return $this-StartIp; function getEndIp() fseek ( $this-fp , $this-EndIpOff , SEEK_SET ) ; $buf=fread ( $this-fp , 5 ) ; $this-EndIp=ord($buf0) + (ord($buf1)*256) + (ord($buf2)*256*256) + (ord($buf3)*256*256*256); $this-CountryFlag=ord ( $buf4 ) ; 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($buf0) + (ord($buf1)*256) + (ord($buf2)* 256*256); else break ; if($offset12) return ; fseek($this-fp , $offset , SEEK_SET ) ; return $this-getStr(); function getStr ( ) $str= ; while ( 1 ) $c=fgetc ( $this-fp ) ; /echo $cn ; if(ord($c0)= 0 ) break ; $str.= $c ; /echo $str n; return $str ; function wry ($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(_WRY_, rb); if ($this-fp = NULL) $szLocal= OpenFileError; return 1; fseek ( $this-fp , 0 , SEEK_SET ); $buf=fread ( $this-fp , 8 ); $this-FirstStartIp=ord($buf0) + (ord($buf1)*256) + (ord($buf2)*256*256) + (ord($buf3)*256*256*256); $this-LastStartIp=ord($buf4) + (ord($buf5)*256) + (ord($buf6)*256*256) + (ord($buf7)*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=($array0 * 256*256*256) + ($array1*256*256) + ($array2*256) + $array3; return $Int; ? 实例演示如下: $Wry=new Wry; $Wry-Wry(60.31.95.255); $country = $Wry-Country; echo $Wry-Country.,.$Wry-Local; 盼望本文所述对大家的php程序设计有所关心。 更多信息请查看IT技术专栏 .
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!