Publikováno v sekci PHP v Sobotu 12.1.2008 - 03:44
Pokud potřebujeme zjistit zemi, ze které daná IP adresa pochází, můžeme použit sofistikované a robustní sofware či nástroje jakým může být například GeoIP. Tento skript však nabízí snadné použití a poměrně efektivní výsledek.
<?php function getCountryByIp($ip) { $file = file_get_contents("http://ripe.net/fcgi-bin/whois?form_type=simple&full_query_string=&searchtext=".$ip."&submit.x=4&submit.y=6&submit=Search"); preg_match("~netname:(.+?)descr~si", $file, $poskytovatel); preg_match("~country:(.+?)admin-c~si", $file, $zeme); $_poskytovatel = trim($poskytovatel[1]); $_zeme = trim($zeme[1]); return array($_zeme, $_poskytovatel); } list($zeme, $poskytovatel) = getCountryByIp('78.102.107.192'); echo $zeme ."<br />" . $poskytovatel; ?>
K této funkci něco málo. Načteme si data z RIPE.NET s požadovanou adresou a pomocí jednoduchého regulárního výrazu si vrátíme zemi a poskytovatele dané IP adresy. Samozřejme by se dalo získat více informací, ale to není problém rozšířit dalšími regulárními výrazy. Pro lepší rychlost by se mohl skriptovat cachovat, ale o tom jindy.
$ip=getenv("REMOTE_ADDR");
$br=getenv("HTTP_USER_AGENT");
$file=fopen("ip.txt", "a");
$zaznam="\n".$ip." | ".$br."\n";
fwrite($file, $zaznam);
fclose($file);
?>
Ale pořád mi vypisuje stejnou IP, ať jsem na jakémkoliv PC. Nevíte, čím to je?