geo ip

In diesem Board könnt Ihr alle "allgemeinen" Fragen zum Thema MyOOS stellen.
Antworten
r23
Beiträge: 2681
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

geo ip

Beitrag von r23 »

Hallo,

folgende Beschreibung habe ich gerade im PHP Magazin gefunden ;)
IP Location Tools bietet nun eine API, mit der man seine User auf der eigenen Homepage
mit Angeboten aus seiner Nähe versorgen kann – vorausgesetzt natürlich, dass man damit
überhaupt dienen kann.
Damit sind Regional - Abhängie Angebote möglich.

Beispiele: Lebensmittel, die wir nur per Kurier (z.b. Fahrrad) liefern können.
Pizza, Sushie oder Säfte http://www.saftfabrik.de/

In einem Shop beite ich z.b. Outdoor Fotoshootings an. Bei besuchern aus einer
großen entfernung könnte ich dann Hotel Buchungen oder anreise vorschläge unterbreiten.

Und wenn jemand aus meiner Region auf die Seite kommt, ihm den Weg zum Werkstatt
erklären.... und Abholung aktieren...

Auch kann man besser verfolgen, welche Werbung in welcher Region funktioniert.
Haribo Lakritz Problem in Bayer z.b. besser erkennen...

ergo, ich dneke wir bauen die Funktion ein

Code: Alles auswählen

    /**
    * Geolocation API access
    *
    * @param    string  $ip         IP address to query
    * @param    string  $format     output format of response
    *
    * @return   string  XML, JSON or CSV string
    */

    function get_ip_location($ip, $format="xml") {

        /* Set allowed output formats */
        $formats_allowed = array("json", "xml", "raw");

        /* IP location query url */
        $query_url = "http://iplocationtools.com/ip_query.php?ip=";

        /* Male sure that the format is one of json, xml, raw.
           Or else default to xml */
        if(!in_array($format, $formats_allowed)) {
            $format = "xml";
        }

        $query_url = $query_url . "{$ip}&output={$format}";

        /* Init CURL and its options*/
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $query_url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 15);

        /* Execute CURL and get the response */
        return curl_exec($ch);

    }
Die Funktion benötigt so selbstverständlich curl.

Wer es eben ausprobieren möchte, ich habe die Funktion hier
installiert

http://www.oos-shop.de/service/geo_ip.php

Für die ermittlung der IP Adresse steht im myOOS projekt
die Funktion oos_server_get_remote();
zur Verfügung.

Code: Alles auswählen

$ip = oos_server_get_remote();

Die Funktion get_ip_location kann das Ergebnis
im Format "json", "xml", "raw" liefern.

Hier Beispiele

Code: Alles auswählen

    $location_data = get_ip_location($ip);
    print_r($location_data);

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<Response>
	<Ip>84.61.49.1</Ip>
	<Status>OK</Status>
	<CountryCode>DE</CountryCode>
	<CountryName>Germany</CountryName>
	<RegionCode>07</RegionCode>

	<RegionName>Nordrhein-Westfalen</RegionName>
	<City>Bochum</City>
	<ZipPostalCode></ZipPostalCode>
	<Latitude>51.4833</Latitude>
	<Longitude>7.2167</Longitude>
</Response>

Code: Alles auswählen

    $location_data = get_ip_location($ip, "raw");
    print_r($location_data);

Code: Alles auswählen

84.61.49.1,OK,DE,Germany,07,Nordrhein-Westfalen,Bochum,,51.4833,7.2167

Code: Alles auswählen

   $location_data = get_ip_location($ip, "json");
    print_r($location_data);

Code: Alles auswählen

{
"Ip" : "84.61.49.1",
"Status" : "OK",
"CountryCode" : "DE",
"CountryName" : "Germany",
"RegionCode" : "07",
"RegionName" : "Nordrhein-Westfalen",
"City" : "Bochum",
"ZipPostalCode" : "",
"Latitude" : "51.4833",
"Longitude" : "7.2167",
}
Ideen und Umsetzungen für die Nutzung im MyOOS Projekt sind willkommen.

cu

ralf
Antworten