茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    PHP判斷IP并轉(zhuǎn)跳到相應(yīng)城市分站的方法
    來源:易賢網(wǎng) 閱讀:1236 次 日期:2015-03-27 11:01:45
    溫馨提示:易賢網(wǎng)小編為您整理了“PHP判斷IP并轉(zhuǎn)跳到相應(yīng)城市分站的方法”,方便廣大網(wǎng)友查閱!

    這篇文章主要介紹了PHP判斷IP并轉(zhuǎn)跳到相應(yīng)城市分站的方法,實(shí)例分析了php解析URL及跳轉(zhuǎn)的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

    本文實(shí)例講述了PHP判斷IP并轉(zhuǎn)跳到相應(yīng)城市分站的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:

    <?php

    class QQWry{

    var $StartIP=0;

    var $EndIP=0;

    var $Country='';

    var $Local='';

    var $CountryFlag=0;

    // 標(biāo)識 Country位置

    // 0x01,隨后3字節(jié)為Country偏移,沒有Local

    // 0x02,隨后3字節(jié)為Country偏移,接著是Local

    // 其他,Country,Local,Local有類似的壓縮??赡芏嘀匾谩?/p>

    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="本地網(wǎng)絡(luò)";return ;}

    elseif(preg_match("/^192/",$dotip)) {$this->Country="局域網(wǎng)";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)|(純真網(wǎng)絡(luò))/","局域網(wǎng)/未知",$this->Country);

    $this->Local=preg_replace("/(CZ88.NET)|(純真網(wǎng)絡(luò))/","局域網(wǎng)/未知",$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;

    }

    }

    ?>

    實(shí)例演示如下:

    $QQWry=new QQWry;

    $QQWry->QQWry("60.31.95.255");

    $country = $QQWry->Country;

    echo $QQWry->Country.",".$QQWry->Local;

    希望本文所述對大家的php程序設(shè)計(jì)有所幫助。

    更多信息請查看IT技術(shù)專欄

    更多信息請查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:PHP判斷IP并轉(zhuǎn)跳到相應(yīng)城市分站的方法
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026上岸·考公考編培訓(xùn)報(bào)班

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專用圖標(biāo)