// 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