Webサイトにブロックしたい(または、もっと良いのはリダイレクトしたい)IPの外部リストがあります。私は最初にこの.htaccess
アプローチを採用していましたが、PHPを使用した方が簡単かもしれないことに気づきました。しかし、今はわかりません...PHPとMySQLを一緒に使用するのが最良のオプションのようです。
MySQLにCIDRブロックを保持するテーブルがあります。私はユーザーのIPをテーブルと比較しようと苦労してきました。
最良の方法は何ですか?
私は、ブロックされたIPを何らかの方法でチェックすることを考えていました。たとえば、次のようなものです(PHPおよび擬似コード)。
$user_ip = $_SERVER['REMOTE_ADDR'];
loop through returned rows {
if ($user_ip in returned row from MySQL table) {
forward to another domain
}
else // do something else...
}
しかし、私はIPのグループを扱っています。単一のIPではありません。私はいくつかのCIDRスクリプトとip2longを使用して、グループを分解および解析してきました。しかし、これは難しいことが証明されています。
コメントからの提案に基づいて、データベースにIPを保存すれば、直接比較することができました。しかし、私が扱っているブロック全体は巨大であり、この方法でそれを行うかどうかはわかりません。私は比較で何百万ものIPを扱っているでしょう...
これを達成するための最善の方法に関する提案はありますか?