Php get location from ip

The following is a modified version of a snippet I found that uses //ipinfodb.com/ip_locator.php to get its information. Keep in mind, you can also apply for an API key with them and use the API directly to get the information supplied as you see fit.

Snippet

function detect_location[$ip=NULL, $asArray=FALSE] {
    if [empty[$ip]] {
        if [!empty[$_SERVER['HTTP_CLIENT_IP']]] { $ip = $_SERVER['HTTP_CLIENT_IP']; }
        elseif [!empty[$_SERVER['HTTP_X_FORWARDED_FOR']]] { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; }
        else { $ip = $_SERVER['REMOTE_ADDR']; }
    }
    elseif [!is_string[$ip] || strlen[$ip] < 1 || $ip == '127.0.0.1' || $ip == 'localhost'] {
        $ip = '8.8.8.8';
    }

    $url = '//ipinfodb.com/ip_locator.php?ip=' . urlencode[$ip];
    $i = 0; $content; $curl_info;

    while [empty[$content] && $i < 5] {
        $ch = curl_init[];
        $curl_opt = array[
            CURLOPT_FOLLOWLOCATION => 1,
            CURLOPT_HEADER => 0,
            CURLOPT_RETURNTRANSFER  => 1,
            CURLOPT_URL => $url,
            CURLOPT_TIMEOUT => 1,
            CURLOPT_REFERER => '//' . $_SERVER['HTTP_HOST'],
        ];
        if [isset[$_SERVER['HTTP_USER_AGENT']]] $curl_opt[CURLOPT_USERAGENT] = $_SERVER['HTTP_USER_AGENT'];
        curl_setopt_array[$ch, $curl_opt];
        $content = curl_exec[$ch];
        if [!is_null[$curl_info]] $curl_info = curl_getinfo[$ch];
        curl_close[$ch];
    }

    $araResp = array[];
    if [preg_match['{
  • City : [[^

  • Chủ Đề