phpbar.de logo

Mailinglisten-Archive

[php] IP auslesen und einem Land zuordnen ?

[php] IP auslesen und einem Land zuordnen ?

Daniel Lorch php_(at)_phpcenter.de
Mon, 3 Jun 2002 18:29:28 +0200


Hi,

> wie krieg ich die IP eines Users, der in einer HTTPS - Verbindung mit
> meinem Server steht raus ? Und wie kann ich die einem Land zuordnen?

Das ist nicht ganz so einfach, wie man denkt. Ich hab es
folgendermassen gemacht, auch wenn es noch nicht ganz zuverlässig
funktioniert:

-------------------------------------------------------------
preg_match("/([a-z0-9\-]+\.([a-z]+))$/", gethostbyaddr($_SERVER['REMOTE_ADDR']), $matches);
list(, $userinfo_domain, $userinfo_tld) = $matches;

if($userinfo_domain == 't-dialin.net') {
  define("USER_COUNTRY", "de");
}
else if($userinfo_tld != '') {
  define("USER_COUNTRY", $userinfo_tld);
}
-------------------------------------------------------------

Wenn aus der Schweiz kommst und bei Tiscali bist, hast Du z.B. den
Hostname 'adsl-130-112-basel2.tiscalinet.ch'. Daraus wird:

  $userinfo_domain = 'tiscalinet.ch';
  $userinfo_tld    = 'ch';

Hier geht es perfekt auf und Du kannst dann in der Konstante
USER_COUNTRY den Wert 'ch' auslesen. Bei t-dialin.net ist es etwas
schwieriger, weil dort 'NET' als Endung steht. Das hab ich hier als
Spezialfall aufgeführt, wie Du siehst.

Das kommt übrigens bei uns u.a. auf der Startseite zum Einsatz:

  http://tsunamihost.ch/

Dort steht nämlich "TsunamiHost (Schweiz|Deutschland|Österreich)". Das
Land zu erkennen ist auch für die darauffolgenden Seiten wichtig,
damit die Preise direkt in Euro umgerechnet werden.

> Schankdön

Schbittebön

-daniel


php::bar PHP Wiki   -   Listenarchive