• 締切済み

IPで端末振り分け

現在携帯電話のIPアドレスを一覧に書き出して、振り分けを行おうとしています。 今考えているのは、ip.iniというファイルに携帯キャリアが発表しているIPアドレスを書き出すとします。 それを$_SERVER['REMOTE_ADDR']でIPアドレスを取得してip.iniに該当するものがあれば携帯用に振り分けるという作業を行いたいと考えています。 ですが、キャリアから発表されているIPアドレスは210.153.84.0/24のようにプレフィックス表記になっています。 全てのIPアドレスを書き出してもいいのですが、そうすると量が膨大になってしまいますし、帯域が増えた場合に面倒になります。 比較する関数も見つからなかったのですが、何か良い方法はありますでしょうか?

みんなの回答

  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

Net_IPv4::parseAddress()の関数を利用すればCIDR アドレスをパース できますので、記録はCIDRにしたままで比較する関数をおつくりになっては 如何でしょうか

  • umota
  • ベストアンサー率46% (150/324)
回答No.1

携帯用ではないが、以前私がネットワークアドレスを判定した方法です。 ネッtワークアドレスの開始と終了を整数(4オクテッドを整数に変換)にし PostgreSQLにテーブルを作成。 対象ipアドレスを整数変換し、開始以上終了以下を検索 4byte の整数になるので php は --enable-bcmath オプションを付けてコンパイル。 計算は BCMath 任意精度数学関数 を使います。 詳しくはマニュアルを読んでください。

関連するQ&A