Suppose you are providing a service for a specific city. You want to show your website only for that city. So you can easily create this by using http://www.geoplugin.net and PHP
First, we need to get the visitor’s IP address by using the below function.
<?php function get_user_ip() { if (!empty($_SERVER['HTTP_CLIENT_IP'])){ return $_SERVER['HTTP_CLIENT_IP']; } if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ return $_SERVER['HTTP_X_FORWARDED_FOR']; } return $_SERVER['REMOTE_ADDR']; }
Then we need to call a geolocation service, in this case, we are using http://www.geoplugin.net
$geo_data = var_export(unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip='.get_user_ip())));
The http://www.geoplugin.net return serializes data, so we need to unserialize() it first and by using var_export() we get the structured information from the text.
We can get the response like below
array ( 'geoplugin_request' => '156.239.105.112', 'geoplugin_status' => 200, 'geoplugin_delay' => '1ms', 'geoplugin_credit' => 'Some of the returned data includes GeoLite data created by MaxMind, available from http://www.maxmind.com.', 'geoplugin_city' => 'Kolkata', 'geoplugin_region' => 'West Bengal', 'geoplugin_regionCode' => 'WB', 'geoplugin_regionName' => 'West Bengal', 'geoplugin_areaCode' => '', 'geoplugin_dmaCode' => '', 'geoplugin_countryCode' => 'IN', 'geoplugin_countryName' => 'India', 'geoplugin_inEU' => 0, 'geoplugin_euVATrate' => false, 'geoplugin_continentCode' => 'AS', 'geoplugin_continentName' => 'Asia', 'geoplugin_latitude' => '22.5697', 'geoplugin_longitude' => '88.3697', 'geoplugin_locationAccuracyRadius' => '20', 'geoplugin_timezone' => 'Asia/Kolkata', 'geoplugin_currencyCode' => 'INR', 'geoplugin_currencySymbol' => '₹', 'geoplugin_currencySymbol_UTF8' => '₹', 'geoplugin_currencyConverter' => '71.7795', )
Now based on that city, just redirect the user to a specific page.
if($geo_data["geoplugin_city"] == 'Kolkata'){ header("location:index.php"); }else{ header("location:error_landing.php"); }
By the above code, you can target multiple cities also. Here index.php supply actual content to the target city. But if a user accesses this website from a different city then it will be redirected to “error_landing.php” page.
So the complete would be something like:
<?php function get_user_ip() { if (!empty($_SERVER['HTTP_CLIENT_IP'])){ return $_SERVER['HTTP_CLIENT_IP']; } if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ return $_SERVER['HTTP_X_FORWARDED_FOR']; } return $_SERVER['REMOTE_ADDR']; } $geo_data = var_export(unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip='.get_user_ip()))); if($geo_data["geoplugin_city"] == 'Kolkata'){ header("location:index.php"); }else{ header("location:error_landing.php"); }