ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルで IP アドレスをチェックまたはフィルタリングするための実装コード

PHP_PHP チュートリアルで IP アドレスをチェックまたはフィルタリングするための実装コード

WBOY
WBOYオリジナル
2016-07-21 15:22:20910ブラウズ

構成ファイルを追加し、プログラムの初期化時に、特定のルールに従って禁止する必要がある IP アドレスを構成ファイルに追加し、構成ファイル内の各ルールを読み取り、この記事で説明する方法を使用します。現在のアクセスされたクライアント IP アドレスがこれらのルールに存在するかどうかを確認し、存在する場合、サービスは拒否されます。

コードをコピー コードは次のとおりです:

/**
* PHP で IP アドレスを確認またはフィルターします
*
* IP 範囲、CIDR (クラスレスドメイン間ルーティング)、単一 IP 形式をサポートします
* 構成: http://www.CodeBit.cn
* 参照:
* - { @link http://us2.php.net/manual/zh/function.ip2long.php#70055}
* - {@link http://us2.php.net/manual/zh/function.ip2long.php# 82397}
*
* @param string $network ネットワーク セグメント、IP 範囲、CIDR、単一 IP 形式をサポート
* @param string $ip チェックする IP アドレス
* @return boolean
*/
function netMatch($network, $ip) {
$network = trim($network) ;
$ ip = トリム($ip);
$result = false;
// IP 範囲 : 174.129.0.0 - 174.129.255.255
if (false !== ($pos = strpos($network, "-") )) {
$from = ip2long(trim(substr($network, 0, $pos)))
$to = ip2long(trim(substr($network, $pos+1))); ($ip );
$result = ($ip >= $from および $ip // CIDR : 174.129.0.0/16
} else if (false !== strpos($network) ,"/ ")) {
list ($net, $mask) = 爆発 ('/', $network)
$result = (ip2long($ip) & ~((1 << (32 - $)マスク)) - 1)) == ip2long($net);
// 単一 IP
} else {
$result = $network === $ip;
return $result;
// 174.129. 0.0 - 174.129 .255.255
var_dump(netMatch(' 174.129.0.0 - 174.129.255.255 ', '174.129.1.31')); // True
var_dump(netMatch(' 174.129.0.0/16 ', 「174.139.1.31」) ); // False
var_dump(netMatch(' 174.129.1.32 ', '174.129.1.31')); // False
?>


IP アドレスには一定の制限があり、使用には注意が必要ですが、緊急の制限されたアクセスには依然として非常に役立ちます。

http://www.bkjia.com/PHPjc/324737.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/324737.html技術記事構成ファイルを追加し、特定のルールに従って禁止する必要がある IP アドレスを構成ファイルに追加することができます。プログラムの初期化時に、構成ファイル内のすべてのエントリを読み取ります...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。