// include the php script
// wget -c http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
// gunzip GeoIP.dat.gz
include("geoip.inc");
// open the geoip database
$gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
// 获取国家代码
$country_code = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
echo "Your country code is:
$country_code ";
// 获取国家名称
$country_name = geoip_country_name_by_addr($gi, $_SERVER['REMOTE_ADDR']);
echo "Your country name is:
$country_name ";
// close the database
geoip_close($gi);
//运行结束时间
$endTimes = utime();
$runTimes = sprintf( '%0.4f', ( $endTimes - $startTimes ) );
echo "Processed in " . $runTimes . "second.";
?>
注:在本地测试的话因 为$_SERVER['REMOTE_ADDR']和$_SERVER['REMOTE_ADDR']可能是127.0.0.1,所 以输出的内容为空。可以自己带入IP测试
或者 使用某网站的API
API 1.
1. 返回文字
http://api.hostip.info/get_html.php?ip=12.215.42.19&position=true
2. 返回图片
<IMG SRC="http://api.hostip.info/flag.php?ip=12.215.42.19" ALT="IP Address Lookup">
API 2. (需要申请api key ,免费的,类似google)
城市:
http://api.ipinfodb.com/v3/ip-city/?key=<your_api_key>&ip=74.125.45.100
国家(更快) :
http://api.ipinfodb.com/v3/ip-country/?key=<your_api_key>&ip=74.125.45.100
Parameter
|
Required
|
Default
|
Value
|
key
|
Yes
|
<empty>
|
API key provided with your free account.
|
ip
|
No
|
Client IP
|
IP address
|
format
|
No
|
raw
|
raw, xml, json
|
callback
|
No
|
<empty>
|
Required when using json callback.
|
Please use the appropriate API for your needs. You can help us keep the load low on our servers by making sure that :
-
If you only need the country name, avoid using the city precision API.
-
If you track your visitors, avoid querying our API for all your page views (you can store the geolocation in a cookie, see below for an example)
API
|
Precision
|
Timezone
|
Domains lookups
|
ip-city
|
City
|
Yes
|
Yes
|
ip-country
|
Country
|
No
|
Yes
|
Please use the appropriate API for your needs. You can help us keep the load low on our servers by making sure that :
-
If you only need the country name, avoid using the city precision API.
-
If you track your visitors, avoid querying our API for all your page views (you can store the geolocation in a cookie, see below for an example)
使用类:
<?php
final class ip2location_lite{
protected $errors = array();
protected $service = 'api.ipinfodb.com';
protected $version = 'v3';
protected $apiKey = '';
public function __construct(){}
public function __destruct(){}
public function setKey($key){
if(!empty($key)) $this->apiKey = $key;
public function getError(){
return implode("\n", $this->errors);
public function getCountry($host){
return $this->getResult($host, 'ip-country');
public function getCity($host){
return $this->getResult($host, 'ip-city');
private function getResult($host, $name){
$ip = @gethostbyname($host);
if(preg_match('/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/', $ip)){
$xml = @file_get_contents('http://' . $this->service . '/' . $this->version . '/' . $name . '/?key=' . $this->apiKey . '&ip=' . $ip . '&format=xml');
$response = @new SimpleXMLElement($xml);
foreach($response as $field=>$value){
$result[(string)$field] = (string)$value;
return $result;
catch(Exception $e){
$this->errors[] = $e->getMessage();
return;
$this->errors[] = '"' . $host . '" is not a valid IP address or hostname.';
return;
include('ip2locationlite.class.php');
//Load the class
$ipLite = new ip2location_lite;
$ipLite->setKey('<your_api_key>');
//Get errors and locations
$locations = $ipLite->getCity($_SERVER['REMOTE_ADDR']);
$errors = $ipLite->getError();
//Getting the result
echo "<p>\n";
echo "<strong>First result</strong><br />\n";
if (!empty($locations) && is_array($locations)) {
foreach ($locations as $field => $val) {
echo $field . ' : ' . $val . "<br />\n";
echo "</p>\n";
//Show errors
echo "<p>\n";
echo "<strong>Dump of all errors</strong><br />\n";
if (!empty($errors) && is_array($errors)) {
foreach ($errors as $error) {
echo var_dump($error) . "<br /><br />\n";
} else {
echo "No errors" . "<br />\n";
echo "</p>\n";
数据库版:
IP geolocation databases download
Updated Mar 5 2011
Database
|
Uncompressed Size(MB)
|
IP Precision
|
Data Provided
|
Format
|
DB1
|
1.60
|
123.123.123
|
ISO country code, country name
|
CSV
BIN
|
DB3
|
17.11
|
123.123.123
|
ISO country code, country name, state, city
|
CSV
BIN
|
DB5
|
21.40
|
123.123.123
|
ISO country code, country name, state, city, latitude, longitude
|
CSV
BIN
|
DB9
|
22.76
|
123.123.123
|
ISO country code, country name, state, city, latitude, longitude, ZIP codes
|
CSV
BIN
|
DB11
|
23.28
|
123.123.123
|
ISO country code, country name, state, city, latitude, longitude, ZIP codes, time zone
|
CSV
BIN
|