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' => '3.236.86.184', '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' => 'Ashburn', 'geoplugin_region' => 'Virginia', 'geoplugin_regionCode' => 'VA', 'geoplugin_regionName' => 'Virginia', 'geoplugin_areaCode' => '', 'geoplugin_dmaCode' => '511', 'geoplugin_countryCode' => 'US', 'geoplugin_countryName' => 'United States', 'geoplugin_inEU' => 0, 'geoplugin_euVATrate' => false, 'geoplugin_continentCode' => 'NA', 'geoplugin_continentName' => 'North America', 'geoplugin_latitude' => '39.0469', 'geoplugin_longitude' => '-77.4903', 'geoplugin_locationAccuracyRadius' => '1000', 'geoplugin_timezone' => 'America/New_York', 'geoplugin_currencyCode' => 'USD', 'geoplugin_currencySymbol' => '$', 'geoplugin_currencySymbol_UTF8' => '$', 'geoplugin_currencyConverter' => '0', )
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 3.236.86.184:
City: Ashburn
Region: Virginia
Region Code: VA
Region Name: Virginia
DMA Code: 511
Country Name: United States
Country Code: US
In the EU?: 0
EU VAT Rate:
Latitude: 39.0469
Longitude: -77.4903
Radius of Accuracy (Miles): 1000
Timezone: America/New_York
Currency Code: USD
Currency Symbol: $
Exchange Rate: 0Some places you may wish to visit near Ashburn:
1:
Place: Ashburn
Country Code: US
Region: Virginia
County:
Latitude: 39.0437200
Longitude: -77.4874900
Distance (miles): 0.27
Distance (km): 0.43
2:
Place: Dulles Town Center
Country Code: US
Region: Virginia
County:
Latitude: 39.0376100
Longitude: -77.4158200
Distance (miles): 4.05
Distance (km): 6.51
3:
Place: Sterling
Country Code: US
Region: Virginia
County:
Latitude: 39.0062200
Longitude: -77.4286000
Distance (miles): 4.34
Distance (km): 6.99
4:
Place: Herndon
Country Code: US
Region: Virginia
County:
Latitude: 38.9695500
Longitude: -77.3861000
Distance (miles): 7.74
Distance (km): 12.45
5:
Place: Poolesville
Country Code: US
Region: Maryland
County:
Latitude: 39.1459400
Longitude: -77.4169300
Distance (miles): 7.89
Distance (km): 12.7
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
See also
- In-depth User Guide
-
- PHP
-
-