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.