クライアントがIPのIPネットワークセグメントに設定されているかどうかを確認しますと、

/ *クライアントが許容範囲のIP * /内にあるかどうか確認してください
{)(パブリックcheckip機能

  もし(セッション::( 'ALLOWACCESS')を取得する){
    trueを返します。
  }
  $モデル=新しいItemModel();
  $ asInfo = $モデル- > getInfoBy([ 'コード' => 'ALLOW_SERVICE'、 'group_code' => 'SECURITY'])。
  $ [ '値'] $ asInfo =有効?'';
  もし(!$有効= 1){
    セッション::セット( 'ALLOWACCESS'、TRUE);
    $モデル= NULL;
    trueを返します。
  }
  $情報= $モデル- > getInfoBy([ 'コード' => 'MANAGE_HOST'、 'group_code' => 'SECURITY'])。
  $ホスト=( "\ nを"、$インフォ[ '値を'])爆発; //分割字符串
  $ IP =の$ this - > getHostIp();
  $のtagvar =偽;
  $としてforeachの($ホストキー=>




  (falseに=== strpos($アルバル、 "/"))IF {
    //同じIP一致
    IF(== $ $アルバルIP) 
    trueに{$ = tagvarを、続行;}

    } {他に
    //マッチングネットワークの下でIPに属し
    $ varipnet =の$ this - > ip_in_network(IPの$、$アルバル);
    IF($のvaripnet)
    {trueに$ = tagvar;続行;}
  }
}
IF(trueに== $のtagvar){
セッション:: SET(「ALLOWACCESS 'trueに);
} {他には、
セッション:: SET(' falseにALLOWACCESS'、);
}
$モデル= NULL;
戻りの$ tagvar;
}

/ *
*取得し、クライアントのIPアドレス
*
* /
パブリックgetHostIp機能()
{
  // TP組み込み関数クライアントIP取得するために
  $ IP =リクエスト() - > IPを();
  IPを$を返す;
}
/ **
* IPか否かが判断されますネットワークセグメント内
* @param $ IP 10.0.0.135ローカルIP
* @paramネットワーク10.0.0.0/24 $
* /
パブリック関数ip_in_network(腹腔$、$ネットワーク)
{
  $ IP =(ダブル)(はsprintf( "%U"、ip2long($ IP)));
  $ Sが爆発=( '/' $ネットワーク);
  $ network_start =(ダブル)(のsprintf( "%U"、ip2long($ S [0]))) ;
  $ network_len = POW(2、32 - $ Sが[1]);
  $ network_end = $ + $ network_len network_start - 1;

  IF(IP $> = $ $ network_start && IP <= $ network_end)
  {
    trueを返し、このセグメントは、この結果に属し//マシンのIPが返されます1。
  }
    リターンをfalseに; //マシンのIPこのセグメントは、0が返され、この結果に属し
}

おすすめ

転載: www.cnblogs.com/xjiaer/p/11764020.html