top


総投稿数 本 
no_

スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)
no_788

Net_GeoIP:IPアドレスから色々知る第一歩。無料のMaxMindを利用して、PEARでやってみる ・・・ 【PHP:Pear】

 2009-03-17
 IPアドレスで、様々な情報がとれるのはわかる
 ・国名
 ・地域
 ・都市
 ・Who is 情報・・・

 PHP でハンドリングするには、
 Pear のライブラリ
 「Net_GeoIP」が、ありますね。

 ちょっと前から興味あったので
 触ってみた・・・

  追記に ▼

FC2ブログランキングにほんブログ村 IT技術ブログ Webサイト構築へブログ王ランキング人気ブログランキング人気ホームページランキングへ


moreアクセス解析サービスなどでも
利用されてるんでしょうね。

フリー版のレベルでは、
 どこまでの情報が得られるのか?
まずは、やってみなくては・・・

PEARを使ってみる
  ◇Net_GeoIPの利用:IPアドレスから情報を得る
  【学習の確認】
  ※次の一連の作業をやってみる
 ◆作業明細◆
 1:Net_GeoIP(PEARライブラリ)の組込み
 2:MaxMindデータベース(フリー版)取得と配置
 3:phpプログラムから、Net_GeoIPを利用

 ※「MaxMindデータベース」を利用した方法は
  他にもあるらしいけど、まずはこれで・・・


 ◆1:Net_GeoIP(PEARライブラリ)の組込み
  ・Net_GeoIP のページへアクセス
   パッケージ情報: Net_GeoIP
   パッケージ情報: Net_GeoIP ・ライセンスは
  LGPL 2.1


 ダウンロードは、サーバーのSSH上から
 「Easy Install」とされる方法で行う。
 サーバーに、SSHで入り、
 ・作業場所を用意し、そこに移動した上で、
> pear install Net_GeoIP-1.0.0RC1
 ※しっかりとバージョンも付記
 > 組み込まれた。

 現在の、PEARライブラリ情報も確かめておくか・・・
> pear list
Installed packages, channel pear.php.net:
=========================================
Package Version State
Archive_Tar 1.3.2 stable
Cache 1.5.4 stable
Console_Getopt 1.2.3 stable
HTTP_Request 1.4.3 stable
Net_GeoIP 1.0.0RC1 beta
Net_Socket 1.0.9 stable
Net_URL 1.0.15 stable
PEAR 1.7.2 stable
Services_Amazon 0.7.1 beta
Structures_Graph 1.0.2 stable
XML_Parser 1.3.0 stable
XML_Serializer 0.19.0a1 alpha
XML_Util 1.2.0 stable
 ※こんな感じ


 ◆2:MaxMindデータベース(フリー版)取得と配置
  ・MaxMind のページへアクセス
   MaxMind - GeoLite Country | Open Source IP Address to Country Database
   MaxMind - GeoLite Country | Open Source IP Address to Country Database ・このほかにも
  都市の情報がフリー版で
  用意されている


 こちらの頁にある
 ・Binary Format の
  「Download the latest GeoLite Country Binary Format」
  をクリックして、ダウンロード。

  ※ちなみに
   非フリー版(有償版)との違いは
   非フリー版(有償版)との違い
   情報の精度や更新の頻度 のようだが
   ・国情報であれば、フリー版で問題ないだろう
  ※非フリー版の価格は
   非フリー版の価格
   こんな感じ。

  まぁ、正式にサービス行うのには、非フリー版を購入することが
  一番いいだろうけれど(そんなに高くないし)

 さてさて・・・

 取得した「MaxMindデータベース」を
 ・サーバーの作業フォルダにアップロードして
  (この 時点では、GeoIP.dat.gz)
 ・SSH画面で
> gunzip GeoIP.dat.gz
 ※解凍され、GeoIP.dat となる


 ◆3:phpプログラムから、Net_GeoIPを利用
  ・まず、純粋に
   PEAR ライブラリの「Net_GeoIP」へアクセスして
   情報を取得してみる
<?
define('MY_DIR', '*****'); # 作業用ディレクトリ
$flg_gosearch = trim($_POST['flg_gosearch']); # goフラグ
$str_valip = trim($_POST['str_valip']); # 入力IPアドレス
# この後に、インジェクション対策として
# 値チェックを行い
# 問題なければ
$country_name = "";
$country_code = "";
if($flg_gosearch==1){
if($str_valip != ""){
define('DIR_PEAR_PHP', '*****');
ini_set("include_path",DIR_PEAR_PHP . ini_get("include_path"));
require_once MY_DIR.'*****/GeoIP.php';
$geoip = Net_GeoIP::getInstance(MY_DIR."*****/GeoIP.dat");
try {
$country_name = $geoip->lookupCountryName($str_valip);
$country_code = $geoip->lookupCountryCode($str_valip);
} catch (Exception $e) {
// 例外処理
}
}
}
?>
 ※これは標準的な利用方法のようだ。
 > マニュアルはこちら

  ・ただし、この標準的な利用方法では
   ・地域や都市名などを得る
    Net_GeoIP::lookupRegion()
    は、利用できない。
    ・指定した IP アドレスに対応する
     国コードおよび地域を含む配列を返します。
     非フリー版の地域データベースが必要

  ・そこで、
   ・MaxMind に用意されている
    PHP用のモジュールを利用させていただく。
    GeoIP PHP API
   GeoIP PHP API ・Pure PHP module
  をダウンロード


   この中の、サンプルを参照に
   次のコード展開。
<?
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);
?>
 ※これで、都市名までの情報が得られた。

 これと、
 Whi is へのアプローチなどを組み合わせれば
 ・IPアドレスを元にした
  検索サービス 創れそうだね・・・


・今日のサンプル
 ◆Net_GeoIP test◆
 1:Net_GeoIP(PEARライブラリ)の組込み
 2:MaxMindデータベース(フリー版)取得と配置
 3:phpプログラムから、Net_GeoIPを利用


◎20090316 今日のサンプル ◎
 【 Net_GeoIP test 】

from 創ったmetaboy
commentsコメント
comment_post












管理者にだけ表示を許可する
commentトラックバック
トラックバックURL:
http://metaboy.blog23.fc2.com/tb.php/788-724cb388
ようこそ
Add to Google 創るmetaboy:RSSフィード
My Yahoo!に追加
最新記事のRSS | 問い合わせ

仕事検索、アルバイト検索、依頼仕事の検索ポータル - 仕事検索.COM - www.jobkensaku.com ツクルン

創るmetaboy - WEB創る、サイト創る、何創る - 創ったmetaboy

 

リンク集

 

最近の記事

 

ブロとも申請フォーム
Sponserd by

さくらのレンタルサーバ さくらのレンタルサーバ
大容量・高機能レンタルサーバー heteml 大容量・高機能レンタルサーバー heteml
XREA (ValueDomain)
お名前.com お名前.com
名づけてねっと名づけてねっと
ムームードメインムームードメイン

 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。