Geo Location based on IP Address - PHP [closed]
We're looking for a fast and accurate way to get the visitors location based on their IP.
We have tried ipinfodb.com but their API made our website severely lag when making the API call.
What other services do you suggest?
Solution 1:
Get Geo-IP Information
Requests a geo-IP-server (netip.de) to check, returns where an IP is located (host, state, country, town).
<?php
$ip='94.219.40.96';
print_r(geoCheckIP($ip));
//Array ( [domain] => dslb-094-219-040-096.pools.arcor-ip.net [country] => DE - Germany [state] => Hessen [town] => Erzhausen )
//Get an array with geoip-infodata
function geoCheckIP($ip)
{
//check, if the provided ip is valid
if(!filter_var($ip, FILTER_VALIDATE_IP))
{
throw new InvalidArgumentException("IP is not valid");
}
//contact ip-server
$response=@file_get_contents('http://www.netip.de/search?query='.$ip);
if (empty($response))
{
throw new InvalidArgumentException("Error contacting Geo-IP-Server");
}
//Array containing all regex-patterns necessary to extract ip-geoinfo from page
$patterns=array();
$patterns["domain"] = '#Domain: (.*?) #i';
$patterns["country"] = '#Country: (.*?) #i';
$patterns["state"] = '#State/Region: (.*?)<br#i';
$patterns["town"] = '#City: (.*?)<br#i';
//Array where results will be stored
$ipInfo=array();
//check response from ipserver for above patterns
foreach ($patterns as $key => $pattern)
{
//store the result in array
$ipInfo[$key] = preg_match($pattern,$response,$value) && !empty($value[1]) ? $value[1] : 'not found';
}
return $ipInfo;
}
?>
Solution 2:
The best and latest is GeoplugginAPI its free and no limitations i am used for this my website http://spidersoft.in for location based download read more from this link
http://geoplugin.com
Solution 3:
Try this one http://ip.codehelper.io/
Here is PHP code. The code will caching your request automatic, so your server will not send multiple request. Return IP Address, Country, City and more information.
<?php
// Required Libraries
require_once("ip.codehelper.io.php");
require_once("php_fast_cache.php");
// New Class
$_ip = new ip_codehelper();
// Detect Real IP Address & Location
$real_client_ip_address = $_ip->getRealIP();
$visitor_location = $_ip->getLocation($real_client_ip_address);
// Output result
echo $visitor_location['Country']."";
echo "<pre>";
print_r($visitor_location);
Solution 4:
The market leader in this space and one that provides an enterprise solution is Digital Element. They offer a wide array of APIs, including PHP, to access their server which you can install locally or access via a web service. Their data is of high quality and the performance of their solution is quite good. MaxMind is another option as well that receives good reviews.
For the best accuracy, you'll want to opt for a service or solution where you get weekly update(s) as this stuff can change quite a bit within a given network. Cost will depend on the frequency of updates, granularity of the geo data, and the number of additional fields or databases you want. Some providers offer language, demographics, company, and domain to name a few.