dポイントプレゼントキャンペーン実施中!

php、PEARのNet_GeoIPの使用して
IPアドレスによりページを振り分けるソースを書いています。
やりたいことは、
「九州地区からのアクセスのみ特定のページへ振り分ける。」
です。

MaxMindのサイトから、無料のデータベースをダウンロードして
使用しているのですが、うまく動作しません。

MaxMind に用意されているPHP用のモジュールを利用して
以下のようにソースを書いています。
========
include("./geoipcity.inc");
include("./geoipregionvars.php");
$city_name = "";
$region_name = "";
$gi = geoip_open(MY_DIR."*****/GeoLiteCity.dat",GEOIP_STANDARD);
$record = geoip_record_by_addr($gi,$str_valip);
$region_name = $record->region;
$city_name = $record->city;
geoip_close($gi);
========
都市名までの情報が得られるはずなのですが
うまくいきません。
どうすればいいのでしょうか。

A 回答 (2件)

確かカバー率悪かったと聞いていたので、自宅のIPを


geoiplookup コマンドで試してみましたところ都市名は表示されませんでした。

% geoiplookup -f /usr/share/GeoIP/GeoLiteCity.dat xxx.xxx.xxx.xxx
GeoIP City Edition, Rev 1: JP, N/A, N/A, N/A, 36.000000, 138.000000, 0
東経と北緯もデフォルト値のようです。

ただ、幾つか試してみると表示されるものもありますが、都内のはずが栃木県だったりと
アテにならない様です。

参照URLにカバー率っぽく書かれてますが 25 mile って 40Km 誤差は日本だとけっこうでかいですね。

僕は国判定にしか使ってませんです。

なので、回答としては
「データファイル GeoLiteCity.dat にあれば表示されますが、無いものは出ません。」
となるのかな。

もし確実にデータにあることが判明しているが、出ないのであればプログラム側の問題ですね。
(見た感じ var_dump( $record ) すればわかりそうなので大丈夫そうですが)

参考URL:http://www.maxmind.com/app/geolite_city_accuracy
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
返礼書くのが遅くなりすみません。

細かく書いていただいてありがとうございます。
データファイルにないため表示されないということですね。
ありがとうございます。

お礼日時:2010/11/16 00:16

同ライブラリをつかってないのでなんとも言えないですが


文法や関数の使い方が正しいのであれば
フリー版は地域データベースをもっていないようですし
もし非フリー版を利用ならメンテナンスが不十分で正しい都市を
返してくれない可能性もあります。

ぐぐったところこちらがヒットしましたがどうでしょう?

参考URL:http://metaboy.blog23.fc2.com/blog-entry-788.html
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
返信が遅くなり申し訳ありません。

参考URLも確認しました。
こちらのとおりにやってみたけど、やはり同じ結果でした。
フリー版ということで地域データを持ってないということですね。
ありがとうございました。

お礼日時:2010/11/16 00:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!