Php Detects User Location By IP

PHP detects user location based on their IP address. In the following, you’ll see a function that, by sending the user’s IP, can be used to determine the user’s location. This function will take an IP as an argument, and if the desired location is not located, UNKNOWN will be returned.

PHP Detects User Location

function detect_city($ip)
{

$default = 'UNKNOWN';

if (!is_string($ip) || strlen($ip) < 1 || $ip == '127.0.0.1' || $ip == 'localhost')
$ip = '8.8.8.8';

$curlopt_useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)';

$url = 'http://ipinfodb.com/ip_locator.php?ip=' . urlencode($ip);
$ch = curl_init();

$curl_opt = array(
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_USERAGENT => $curlopt_useragent,
CURLOPT_URL => $url,
CURLOPT_TIMEOUT => 1,
CURLOPT_REFERER => 'http://' . $_SERVER['HTTP_HOST'],
);

curl_setopt_array($ch, $curl_opt);

$content = curl_exec($ch);

if (!is_null($curl_info))
{
$curl_info = curl_getinfo($ch);
}

curl_close($ch);

if (preg_match('{<li>City : ([^<]*)</li>}i', $content, $regs))
{
$city = $regs[1];
}
if (preg_match('{<li>State/Province : ([^<]*)</li>}i', $content, $regs))
{
$state = $regs[1];
}

if ($city != '' && $state != '')
{
$location = $city . ', ' . $state;
return $location;
} else
{
return $default;
}

Source: http://www.catswhocode.com/blog/snippets/detect-location-by-ip

%d bloggers like this: