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.
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
- In-depth User Guide
-
- PHP
-
-