geoPlugin Home

PHP Geolocation Web Service

The PHP Geolocation web service API 1) allows you to directly program your back-end PHP scripts to deliver dynamic geo-localized pages using the PHP array provided by geoPlugin.
To access this service, add the following url to a remote include call

	http://www.geoplugin.net/php.gp?ip=xx.xx.xx.xx


Of course, substitute the xx's with your visitor's IP number.

As an example, the following PHP snippet

  echo var_export(unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip='.$_SERVER['REMOTE_ADDR'])));


Will output:

array (
  'geoplugin_request' => '104.23.170.50',
  'geoplugin_status' => 200,
  'geoplugin_delay' => '1ms',
  'geoplugin_credit' => 'Some of the returned data includes GeoLite2 data created by MaxMind, available from https://www.maxmind.com.',
  'geoplugin_city' => 'Amsterdam',
  'geoplugin_region' => 'North Holland',
  'geoplugin_regionCode' => 'NH',
  'geoplugin_regionName' => 'North Holland',
  'geoplugin_areaCode' => '',
  'geoplugin_dmaCode' => '',
  'geoplugin_countryCode' => 'NL',
  'geoplugin_countryName' => 'The Netherlands',
  'geoplugin_inEU' => 1,
  'geoplugin_euVATrate' => 21,
  'geoplugin_continentCode' => 'EU',
  'geoplugin_continentName' => 'Europe',
  'geoplugin_latitude' => '52.3716',
  'geoplugin_longitude' => '4.8883',
  'geoplugin_locationAccuracyRadius' => '20',
  'geoplugin_timezone' => 'Europe/Amsterdam',
  'geoplugin_currencyCode' => 'EUR',
  'geoplugin_currencySymbol' => NULL,
  'geoplugin_currencySymbol_UTF8' => '',
  'geoplugin_currencyConverter' => '0.9155',
)


PHP Geolocation Class

You can download the geoPlugin class to simplify using the PHP Web service.

View Class Source

A detailed example of how to use the class (with comments) is included in the class package.
An abbreviated version of the example is shown below

<?php
require_once('geoplugin.class.php');
$geoplugin = new geoPlugin();
// If we wanted to change the base currency, we would uncomment the following line
// $geoplugin->currency = 'EUR';
 
$geoplugin->locate();
 
echo "Geolocation results for {$geoplugin->ip}: <br />\n".
	"City: {$geoplugin->city} <br />\n".
	"Region: {$geoplugin->region} <br />\n".
	"Region Code: {$geoplugin->regionCode} <br />\n".
	"Region Name: {$geoplugin->regionName} <br />\n".
	"DMA Code: {$geoplugin->dmaCode} <br />\n".
	"Country Name: {$geoplugin->countryName} <br />\n".
	"Country Code: {$geoplugin->countryCode} <br />\n".
	"In the EU?: {$geoplugin->inEU} <br />\n".
	"EU VAT Rate: {$geoplugin->euVATrate} <br />\n".
	"Latitude: {$geoplugin->latitude} <br />\n".
	"Longitude: {$geoplugin->longitude} <br />\n".
	"Radius of Accuracy (Miles): {$geoplugin->locationAccuracyRadius} <br />\n".
	"Timezone: {$geoplugin->timezone}  <br />\n".
	"Currency Code: {$geoplugin->currencyCode} <br />\n".
	"Currency Symbol: {$geoplugin->currencySymbol} <br />\n".
	"Exchange Rate: {$geoplugin->currencyConverter} <br />\n";
 
if ( $geoplugin->currency != $geoplugin->currencyCode ) {
	//our visitor is not using the same currency as the base currency
	echo "<p>At todays rate, US$100 will cost you " . $geoplugin->convert(100) ." </p>\n";
}
 
/* find places nearby */
$nearby = $geoplugin->nearby();
if ( isset($nearby[0]['geoplugin_place']) ) {
	echo "<pre><p>Some places you may wish to visit near " . $geoplugin->city . ": </p>\n";
	foreach ( $nearby as $key => $array ) {
 
		echo ($key + 1) .":<br />";
		echo "\t Place: " . $array['geoplugin_place'] . "<br />";
		echo "\t Country Code: " . $array['geoplugin_countryCode'] . "<br />";
		echo "\t Region: " . $array['geoplugin_region'] . "<br />";
		echo "\t County: " . $array['geoplugin_county'] . "<br />";
		echo "\t Latitude: " . $array['geoplugin_latitude'] . "<br />";
		echo "\t Longitude: " . $array['geoplugin_longitude'] . "<br />";
		echo "\t Distance (miles): " . $array['geoplugin_distanceMiles'] . "<br />";
		echo "\t Distance (km): " . $array['geoplugin_distanceKilometers'] . "<br />";
 
	}
	echo "</pre>\n";
}
?>



This will output:


Geolocation results for 104.23.170.50: 
City: Amsterdam
Region: North Holland
Region Code: NH
Region Name: North Holland
DMA Code:
Country Name: The Netherlands
Country Code: NL
In the EU?: 1
EU VAT Rate: 21
Latitude: 52.3716
Longitude: 4.8883
Radius of Accuracy (Miles): 20
Timezone: Europe/Amsterdam
Currency Code: EUR
Currency Symbol:
Exchange Rate: 0.9155

At todays rate, US$100 will cost you 91.55

Some places you may wish to visit near Amsterdam:

1:
Place: Sloterdijk
Country Code: NL
Region: North Holland
County:
Latitude: 52.3871000
Longitude: 4.8468200
Distance (miles): 2.05
Distance (km): 3.3
2:
Place: Osdorp
Country Code: NL
Region: North Holland
County:
Latitude: 52.3569400
Longitude: 4.8007700
Distance (miles): 3.83
Distance (km): 6.16
3:
Place: Diemen
Country Code: NL
Region: North Holland
County:
Latitude: 52.3396400
Longitude: 4.9625600
Distance (miles): 3.83
Distance (km): 6.17
4:
Place: Landsmeer
Country Code: NL
Region: North Holland
County:
Latitude: 52.4308300
Longitude: 4.9152800
Distance (miles): 4.25
Distance (km): 6.84
5:
Place: Durgerdam
Country Code: NL
Region: North Holland
County:
Latitude: 52.3777000
Longitude: 4.9890800
Distance (miles): 4.27
Distance (km): 6.87


PHP Geolocation Currency Converter

The “geoplugin_currencyConverter” array key is the conversion rate for the currency converter base currency.
Like all calls to any of geoPlugin's web services, the default base_currency is USD ($US).
Thus, if your base currency is NOT $US, then you must add the variable base_currency=XXX to the call to geoplugin.net
eg

http://www.geoplugin.net/php.gp?base_currency=EUR

Now geoplugin_currencyConverter will output the exchange rate of one Euro for your visitor.

The base_currency value must be a valid ISO 4217 3-letter code.




An example for using the currency converter in PHP is given below.

 
<?php
 
function cc($amount) {
	global $geoPlugin_array;
	if ( isset($geoPlugin_array['geoplugin_currencyCode']) && $geoPlugin_array['geoplugin_currencyCode'] != 'USD' ) { 
		return '(' . $geoPlugin_array['geoplugin_currencySymbol'] . round( ($amount * $geoPlugin_array['geoplugin_currencyConverter']),2) . ')';
	} 
	return false;
}
 
$geoPlugin_array = unserialize( file_get_contents('http://www.geoplugin.net/php.gp?ip=' . $_SERVER['REMOTE_ADDR']) );
 
echo '<h3>Product A costs $800 ' . cc(800) . '</h3>';
 
?>



Product A costs US$800 (732.4)





See also

1) This product includes GeoLite data created by MaxMind, available from http://maxmind.com/
 
 


Acceptable Use Policy    Privacy Policy and User Agreement    Contact geoPlugin


©2006 - 2025 geoPlugin® is a registered trademark of GEOPLUGIN, SAS