2013年7月24日

IPアドレスが同じネットワークの範囲内にいるかチェックする


 リクエストしたクライアントが管理しているネットワーク内かどうか判定する為の関数。




  1. /**
  2.     同じネットワーク内にいるか判定する
  3.     @param $ip チェックするIPアドレス
  4.     @return true..いる false..いない
  5. */
  6. private function inCIDR($ip) {

  7.    $CIDR_LIST = array('127.0.0.1/24', '192.168.0.0/24');  // この範囲いないにいるかチェックする。普通外に持つか、もらう。

  8.     for($i=0; $i<count($CIDR_LIST); $i++) {
  9.         $cidr = $CIDR_LIST[$i];

  10.         list($network, $mask_bit_len) = explode('/', $cidr);
  11.         $host = 32 - $mask_bit_len;
  12.         $net = ip2long($network) >> $host << $host;
  13.         $ip_net = ip2long($ip) >> $host << $host;

  14.         if($net==$ip_net) {
  15.             // 一致したので同じ中にいる。
  16.             return true;
  17.         }
  18.     }
  19.     return false;
  20. }


0 件のコメント:

コメントを投稿