日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php跳转分站,PHP判断IP并转跳到相应城市分站的方法

發布時間:2023/12/10 php 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php跳转分站,PHP判断IP并转跳到相应城市分站的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文實例講述了PHP判斷IP并轉跳到相應城市分站的方法。分享給大家供大家參考。具體實現方法如下:

class QQWry{

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($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程序設計有所幫助。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的php跳转分站,PHP判断IP并转跳到相应城市分站的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一二区在线视频 | 亚洲自拍偷拍精品视频 | 夜夜草影院 | 视频一区二区视频 | 国产哺乳奶水91在线播放 | 四虎午夜影院 | 伊人久在线 | 亚洲国产免费av | 中文字幕色哟哟 | 色网站在线 | 一区二区三区在线播放 | 人成在线| 免费极品av一视觉盛宴 | 国产一二三精品 | 久人人| 看片地址 | 黄色免费视频 | 制服丝袜av在线播放 | 亚洲精品尤物 | 一级黄片毛片 | 久久国产视频一区 | 亚洲国产精品久久人人爱 | 日批视频在线看 | 日韩在线视频网址 | 亚洲乱轮 | 国产男男gay | 91日日夜夜 | 亚洲网站色 | 天天操天天插天天射 | 夜夜嗨av一区二区三区免费区 | 久久久久久久久久久久国产 | 2021狠狠操| 日韩av在线播放一区 | av免费高清 | caopeng在线视频 | 婷婷中文 | 欧美性三级 | 毛片高清 | 国产伦精品一区二区三区四区视频 | 亚洲av片在线观看 | www久久久久 | 欧美高清v | 色综合天天综合综合国产 | 欧美亚洲免费 | 久久在现 | 亚洲精品免费在线观看视频 | 日韩成人av网址 | 一级欧美一级日韩 | 香蕉影院在线 | www.天天色| 日韩视频网站在线观看 | 成人片免费视频 | 亚洲小说春色综合另类 | 午夜爱爱影院 | 精品国产乱码久久久久久浪潮 | 久夜精品 | 久久天堂网 | 亚洲AV无码成人国产精品色 | 国模人体私拍xvideos | 午夜激情欧美 | 国产3页| 久久免费视频网 | 成人精品 | 96福利视频| 欧美日韩精 | 综合视频一区 | 久久久精品亚洲 | 午夜亚洲国产 | 国产调教打屁股xxxx网站 | 亚洲一级伦理 | 97小视频 | 打开每日更新在线观看 | 91丨porny丨海角社区 | 丰满大乳国产精品 | 二区欧美| 国产免费视频 | 久久深夜| 国产精品1区 | av无码精品一区二区三区宅噜噜 | 免费污网站在线观看 | 欧美老女人性生活 | jlzzjlzz亚洲日本少妇 | 免费公开在线视频 | 超碰人人人 | 中文字字幕一区二区三区四区五区 | 亚洲欧洲av | 丝袜美女啪啪 | 四虎在线视频 | 完全免费在线视频 | 日本美女一区二区 | 亚洲成人激情小说 | 亚洲欧美日韩精品永久在线 | 色四月婷婷 | 少妇久久久久久被弄到高潮 | 麻豆免费看片 | 国产精品精品国产色婷婷 | 日韩精品人妻中文字幕有码 | 久久国产欧美日韩精品 | 麻豆影视国产在线观看 |