2011年8月23日 星期二

Using IP Address To Find Country

Using GeoLite Country,參考http://www.maxmind.com/app/csv
  1. 下載GeoLite Country
  2. 建立Table
    CREATE TABLE `geo_country` (
        `start_ip` char(15) NOT NULL COMMENT '起始IP',
        `end_ip` char(15) NOT NULL COMMENT '結束IP',
        `start` bigint(20) NOT NULL COMMENT '起始值',
        `end` bigint(20) NOT NULL COMMENT '結束值',
        `country` char(2) NOT NULL COMMENT '國家簡碼',
        `name` char(50) NOT NULL COMMENT '國家名稱'
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='國家ip'

  3. 將檔名命名成和Table一樣可以在import時自動幫你對應到Table,這邊是geo_country
  4. Import CSV到Mysql
    mysqlimport
     --fields-terminated-by=","
     --fields-optionally-enclosed-by="\""
     --lines-terminated-by="\n"
     --host=<YOUR_HOST>
     --user=<YOUR_USER>
     --password=<YOUR_PASSWORD>
     <YOUR_DATABASE>
     -L /PATH/geo_country.csv
  5. 測試168.95.1.1 計算方式 (168 x 16777216) + (95 x 65536) + (1 x 256) + (1 x 1)
    SELECT * FROM `geo_country` WHERE 2824798465 BETWEEN `start` AND `end`;
若要安裝在Debian上可參考:http://www.php.net/manual/en/geoip.setup.php#93000
輕鬆省事的啦。

另外如果你要求要更精確、夠有錢,也可以不用GeoLite,改用GeoIP。

沒有留言:

張貼留言