PHP und Geolocation – Lokalisierung leicht gemacht

Ein Besuch auf www.regnets.in zeigt kurz und knapp die aktuelle Wetterlage für den Standort des Besuchers an. Ermöglicht wird das über Geolocation anhand der IP-Adresse des Benutzers. Natürlich kann der Benutzer auch andere Städte abfragen: www.regnets.in/Hamburg oder www.regnets.in/Berlin.

Geolocation lässt sich beispielsweise mit (kostenlosen) GeoLite City von MaxMind sehr einfach in PHP-Projekte integrieren. Mit nur wenigen Dateien und wenigen Zeilen Code lässt sich so der Standort des Besuchers relativ genau (für Deutschland mit 71% Trefferquote) bestimmen.

Die benötigten Dateien…

  • geoip.inc
  • geoipcity.inc
  • geoipregionvars.php
  • GeoLiteCity.dat – die eigentliche Datenbank

… lassen sich hier herunterladen.

Folgender PHP Code liefert die Geolocation des Besuchers:

include("geoipcity.inc");
include("geoipregionvars.php");

function getCity() {

	$gi = geoip_open("GeoLiteCity.dat", GEOIP_STANDARD);
	$record = geoip_record_by_addr($gi, $_SERVER['REMOTE_ADDR']);
	geoip_close($gi);

	return $record->city;
}

Das $record-Objekt enthält aber auch noch andere, interessante Daten:

print $record->country_code . " " . $record->country_code3 . " " . $record->country_name . "\n";
print $record->region . " " . $GEOIP_REGION_NAME[$record->country_code][$record->region] . "\n";
print $record->city . "\n";
print $record->postal_code . "\n";
print $record->latitude . "\n";
print $record->longitude . "\n";
print $record->metro_code . "\n";
print $record->area_code . "\n";

Fragen, Anregungen? Dafür sind die Kommentare da!

Share
  1. Hallo
    ich nutze zur Wetteranzeige folgenden Code:
    $v){
    preg_match_all(“/(.*)/Uis”, $file, $array_infos);
    $infos = $array_infos[1];
    $ct_infos=count($infos);
    if($ct_infos>=1){
    for($i=0;$i<$ct_infos;$i++){
    preg_match_all("//Uis”, $infos[$i], $array_details);
    $detail_keys=$array_details[1];
    $detail_values=$array_details[2];
    $ct_details=count($detail_keys);
    if($ct_details>=1){
    for($j=0;$j

    <img src="http://www.google.com/” alt=”" />
    ºC | ºC

    <img src="http://www.google.com/” alt=”" />
    ºC | ºC

    <img src="http://www.google.com/” alt=”" />
    ºC | ºC

    <img src="http://www.google.com/” alt=”" />
    ºC | ºC

    Wie kann ich jetzt die über geolocation ermittelte Stadt dort $url = “http://www.google.com/ig/api?weather=duesseldorf&hl=de” integrieren? Geht das überhaupt? Bin absoluter php Laie und dankbar für jede hilfreiche Antwort.
    Danke & Grüße

  2. Hups… da ist wohl was schief gelaufen. Nochmal:
    Hallo
    ich nutze zur Wetteranzeige folgenden Code:
    $v){
    preg_match_all("/(.*)/Uis", $file, $array_infos);
    $infos = $array_infos[1];
    $ct_infos=count($infos);
    if($ct_infos>=1){
    for($i=0;$i<$ct_infos;$i++){
    preg_match_all("//Uis", $infos[$i], $array_details);
    $detail_keys=$array_details[1];
    $detail_values=$array_details[2];
    $ct_details=count($detail_keys);
    if($ct_details>=1){
    for($j=0;$j

    <img src="http://www.google.com/" alt="" />
    ºC | ºC

    <img src="http://www.google.com/" alt="" />
    ºC | ºC

    <img src="http://www.google.com/" alt="" />
    ºC | ºC

    <img src="http://www.google.com/" alt="" />
    ºC | ºC


    Wie kann ich jetzt die über geolocation ermittelte Stadt dort $url = "http://www.google.com/ig/api?weather=Duesseldorf&hl=de"; integrieren? Geht das überhaupt? Bin absoluter php Laie und dankbar für jede hilfreiche Antwort.
    Danke & Grüße

  3. Mensch…muss wohl nicht explizit sagen, dass ich laie bin…das sieht ja furchtbar aus. Kann ich das nicht per mail senden?

Leave a Comment