Jak zjistit zemi podle IP adresy?

/ Blog / PHP / Jak zjistit zemi podle IP adresy?
Článek je už starý a informace v něm nemusí být relevantní, mohou být zastaralé či dokonce již neplatné. Články nepíši, informace si poznamenávám jinam, sledovat mě můžete na Githubu, Medium či jiných "IT" síťích. 👋 V případě dotazu mi napište na e-mail či telegram (sekce kontakt).

Publikováno v sekci PHP v 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.

 1: <?php function getCountryByIp($ip)
 2: {
 3: $file = file_get_contents(&quot;<a href="http://ripe.net/fcgi-bin/whois?form_type=simple&amp;full_query_string=&amp;searchtext=&quot;.$ip.&quot;&amp;submit.x=4&amp;submit.y=6&amp;submit=Search">http://ripe.net/fcgi-bin/whois?form_type=simple&amp;full_query_string=&amp;searchtext=".$ip."&amp;submit.x=4&amp;submit.y=6&amp;submit=Search</a>&quot;);</p>
 4: <pre><code>preg_match("~netname:(.+?)descr~si", $file, $poskytovatel);
 5: preg_match("~country:(.+?)admin-c~si", $file, $zeme);
 6: 
 7: $_poskytovatel = trim($poskytovatel[1]);
 8: $_zeme = trim($zeme[1]); 
 9: 
10: return array($_zeme, $_poskytovatel);</code></pre>
11: <p>}</p>
12: <p>list($zeme, $poskytovatel) = getCountryByIp('78.102.107.192');</p>
13: <p>echo $zeme .&quot;&lt;br /?&gt;
14: &quot; . $poskytovatel; ?&gt;

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.

Kategorie

  • Osobní názory - 0x
  • PHP - 9x
  • MYSQL - 4x
  • CSS - 7x
  • jQuery - 3x
  • Sociální síť - 1x
  • Nette - 5x
  • Tipy & triky - 3x
  • Twitter Bootstrap - 1x
  • Týdenní tipy a novinky - 4x
  • SCSS - 1x
  • GIT - 1x
  • Gulp - 1x

  • Komentáře (3x)

    Mám následující php skript: <?php $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?
    #2 reagovat Roman Janko:
    Jak to souvisi s timto clankem?
    #3 reagovat Pavel:
    Tak tohle jsem bezúspěchu řešil nevím jak dlouho. Díky moc za článek...

    Vložit nový komentář


    • na jiné komentáře odkazujte pomocí odkazu reagovat
    • vaše IP adresa bude zaznamenána
    • používají se gravatary
    • můžeme si tykat
    • HTML tagy vypnuty. PHP kód se také neprovede. Pokud potřebuju přiložit ukázku vašeho kódu, použijete službu pastebin
    • vulgární, rasistické či jinak nepřípustné komentáře budou smazány