Geotargeting mit PHP
Vor einiger Zeit habe ich für einen Kunden eine Lösung realisiert, die in einem Online-Shop feststellt, ob der Besucher sich in dem Land befindet für den der Shop gültig ist. Die Geoposition von Besuchern einer Website kann relativ zuverlässig mittels >Geotrageting festgestellt werden.
Da man in jedem Fall eine Zuordnung der aufgelösten IP-Adressen zu Ländern benötigt, muss man sich zu Beginn des Projektes überlegen, woher man diese Daten beziehen kann. Neben der Möglichkeit, die PHP-Erweiterung Geo IP Location auf dem Server zu installieren, kann man auf externe Dienste wie diesen oder jenen zugreifen. Eine weitere Möglichkeit ist die Verwendung einer Datenbanken, die man sich auf dem Server speichern kann. Gerade wenn man sich nicht auf die Erreichbarkeit von externen Diensten verlassen will und / oder man nicht die Möglichkeit oder das KnowHow hat Bibliotheken auf dem Server zu installieren, ist diese Lösung besonders charmant.
In meinem Beispiel nutzte ich die Datenbank von MaxMind. MaxMind bietet sowohl eine freie als auch eine kommerzielle Datenbank an, welche sich in der Genauigkeit der IP-Zuordnungen unterscheiden. Neben der Datenbank liefert und MaxMind auch gleich eine API die in diverse Programmiersprachen implementiert ist. Das Pure PHP module lässt sich auf allen Plattformen einsetzen, die PHP und somit auch PEAR unterstützen.
Die Verwendung der API ist denkbar einfach und führt sich mit ein paar Zeilen PHP-Code
require_once('Net/GeoIP.php');
$db = Net_GeoIP::getInstance('PFAD_ZUR_GEOIP_DATENBANK.dat');
$geoip = $_SERVER['REMOTE_ADDR'];
$countryName = $db->lookupCountryName($ip);
$countryCode = $db->lookupCountryCode($ip);
und HTML
<dl> <dt>Your IP Address</dt><dd>< ?php echo $geoip; ?></dd> <dt>Country Code</dt><dd>< ?php echo $code; ?></dd> <dt>Country Name</dt><dd>< ?php echo $country; ?></dd> </dl>
zu Ergebnis.
Wie im Beispiel zu sehen ist benötigt man neben der Datenbank nur noch das PEAR-Package Net_GeoIP um die Geolocation zu bestimmen. Im Beispiel unter http://nasumi.net/geocoding kannst du testen, ob deine Location korrekt erkannt wird.
Aktualisiert am November 24, 2009
Tags:geotargeting, PHP