Geolokalizacja w php

Pokażę jak w php określić położenia użytkownika na podstawie adresu IP oraz api api.hostip.info. Najpierw napiszmy prostą funkcję, która zwraca adres IP klienta.

function getIp()
{
    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'];
    }
    return $ip;
}
Teraz skorzystamy z api, aby pobrać informacje o położeniu. Dane zwracane są czystym tekstem. Na ostatnim listingu zaanalizujemy te dane. Dane z api są zwracane w postaci:
Country: (Unknown Country?) (XX)
City: (Unknown City?)

Latitude:
Longitude:
IP: 123.233.158.23
$client_ip = getIp();

$loc = file_get_contents('http://api.hostip.info/get_html.php?ip='.$client_ip.'&position=true');

preg_match_all("|:([A-Za-z0-9-_()?!& ]+)\n|", $loc, $matches, PREG_SET_ORDER);

var_dump($matches);
Jak widać najpierw pobieramy IP klienta, potem łączymy się z api, a na koniec parsujemy zwrócony wynik.