This snippet detects the location of a specific IP. If the location isn’t found, UNKNOWN is returned.
|
<?php |
|
// Source : http://www.catswhocode.com/blog/snippets/detect-location-by-ip |
|
|
|
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; |
|
} |
|
|
|
} |
|
?> |