PHP IPアドレス範囲の検証

PHP IPアドレス範囲の検証

私は自分のウェブサイトにトライアルペイを設定しています。ウェブサイトには次のように表示されます:

リクエストは次の IP アドレス範囲から発信されます: 70.42.249.1 - 70.42.249.255

PHP では、認証ページにアクセスするボット/人物が上記の IP 範囲内にあるかどうかをどのように確認すればよいですか?

答え1

IPアドレスを扱うのであれば、文字列ではなく整数として扱う方が簡単でしょう。ip2long()これを行う関数。

役に立つ実用的な関数を以下に示します。

function ipbetweenrange($needle, $start, $end) {
  if((ip2long($needle) >= ip2long($start)) && (ip2long($needle) <= ip2long($end))) {
    return true;
  }
  return false;
}

$ipstart = '70.42.249.1';
$ipend = '70.42.249.255';

echo ipbetweenrange('70.42.249.1', $ipstart, $ipend); // true
echo ipbetweenrange('70.42.249.255', $ipstart, $ipend); // true
echo ipbetweenrange('70.42.249.128', $ipstart, $ipend); // true
echo ipbetweenrange('192.168.0.1', $ipstart, $ipend); // false

答え2

foreach( range( 1, 255 ) as $number )
{

    if( $userIp == '70.42.249.' . $number )
        // we have a match, do whatever you want

}

そのような内容です。そして、はい、これはおそらく Stackoverflow に移動する必要があります。

関連情報