ホームページ  >  記事  >  バックエンド開発  >  PHPの範囲内にIPアドレスが存在するかどうかを確認する

PHPの範囲内にIPアドレスが存在するかどうかを確認する

不言
不言オリジナル
2018-04-13 10:07:543231ブラウズ

この記事の内容は、PHP で IP アドレスが範囲内に存在するかどうかを判断する方法について共有することです。必要な友人はそれを参照してください。

範囲を判断できる方法をインターネット上でたくさん見てきました。 IP アドレス、および文字列インターセプト。いろいろ試してみましたが、あまり信頼できないと感じました。第一に、精度を放棄するのは少し抵抗があります。第二に、パフォーマンスに悪影響を及ぼしすぎて複雑です。いろいろ情報を調べた結果、よりパフォーマンスの良いIPアドレス範囲を決定する簡単な方法を見つけたので、ここにメモしておきます。

IP アドレス データベースに関しては、http://www.cz88.net/

オンライン インターフェイスを使用することもできますが、問題があります。 for ループを頻繁に使用してアクセスすることはできません。そうしないと、インターフェイスによってブロックされます

淘宝網 IP アドレス データベース: http://ip.taovao.com/service/getIpInfo.php?ip=ここに IP アドレスを入力してください


実際、IP アドレス範囲を実際に決定するのは非常に簡単です。以下に書いたケースを見れば理解できるでしょう。



[php]
プレーンコピーを表示

//案例:判断192.168.1.127是否在 (192.168.1.1--192.168.1.255)的范围里面  
  
$ip_start = get_iplong('192.168.1.1'); //起始ip  
$ip_end = get_iplong('192.168.1.255');//至ip  
$ip = get_iplong('192.168.1.127');//判断的ip  
//可以这样简单判断  
if($ip>=$ip_start && $ip <=$ip_end){  
    echo &#39;IP在此范围内&#39;;  
}else{  
    echo &#39;IP不在此范围&#39;;  
}  
/** 
 * 将ip地址转换成int型 
 * @param $ip  ip地址 
 * @return number 返回数值 
 */  
function get_iplong($ip){  
    //bindec(decbin(ip2long(&#39;这里填ip地址&#39;)));  
    //ip2long();的意思是将IP地址转换成整型 ,  
    //之所以要decbin和bindec一下是为了防止IP数值过大int型存储不了出现负数。  
    return bindec(decbin(ip2long($ip)));  
}


以上がPHPの範囲内にIPアドレスが存在するかどうかを確認するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:phpの基礎学習次の記事:phpの基礎学習