IP mit PHP abfragen

Unter der vordefinierten PHP-Variable $_SERVER sind allerhand Informationen etwa zum aktuellen Request (Anfrage an den Webserver) oder auch Daten bzgl. des Webservers, wie der Pfad, unter dem sich das Script im Dateisystem des Servers befindet, gespeichert. Allen PHP-Scripten – die in einem Webserver laufen – stehen diese Informationen zur Verfügung. Im Zusammenhang mit der Abfrage von IP-Adressen der an einer Client-Server-Kommunikation beteiligten Rechner unter PHP ist diese als Array organisierte Variable von größter Bedeutung.

Während die IP-Adresse des Clients (Besuchers) stets unter dem Schlüssel REMOTE_ADDR des $_Server-Arrays abgelegt ist, findet man die IP-Adresse des Servers (des Webservers, der gerade mit der Beantwortung der Anfrage beschäftigt ist) unter Umständen unter dem Schlüssel SERVER_ADDR. Unter Umständen bedeutet, dass nicht jeder Webserver diesen Wert auch setzen muss. Die in $_SERVER gespeicherten Schlüssel-Werte-Paare können je nach Serverkonfiguration differieren und man sollte sich nicht immer auf das Vorhandensein von bestimmten Elementen verlassen, da die Konfiguration je nach Hoster unterschiedlich ausfallen kann.

Eventuell ist unter dem Schlüssel REMOTE_HOST auch der Name des Rechners gespeichert der die Anfrage gestellt hat, worduch eine Abfrage per DNS-Lookup (siehe Beispiel 2) sich erübrigt, da der Name des Clients hier direkt entnommen werden kann. Für den Webserver wird darüber hinaus ein Wert unter SERVER_NAME angegeben, der den Namen zum (virtuellen) Webserver enthält. Hinweis: Ob bestimmte Elemente (Schlüssel) im Array abgelegt sind, können Sie mit isset überprüfen.

Sollten die Zuordnungen von IP-Adressen und Hostnamen nicht vorhanden sein, so kann eine Zuordnung der Hostnamen mit Hilfe eines DNS-Lookups erfolgen, womit zu einer IP-Adresse der entsprechende Rechnername ermittelt wird (oder umgekehrt). DNS-Lookups werden an bestimmte Rechner gestellt die quasi ein Telefonbuch für das Internet darstellen. Diese Rechner ordnen Hostnamen und IP-Adressen einander zu. Fordert ein Client beispielsweise eine Seite von www.evocomp.de an, so fragt er zunächst bei einem DNS-Server nach, unter welcher IP-Adresse er diese Domain erreichen kann. Als Anwort erhält das anfragende Programm die derzeit gültige IP-Adresse des Zielrechners und mit dieser kann sich der Client direkt an den Server wenden.

PHP Remote IP Beispiel 1: Mit PHP IP Adresse des Besuchers (get client bzw. remote IP) ermitteln

Folgendes Beispiel gibt die IP-Adresse des Besuchers oder Clients (auch remote IP genannt) mit PHP auf einer HTML-Seite aus. Dabei handelt es sich entweder um die IP-Adresse eines Rechners, über den eine Organisation (etwa eine Firma oder ein ähnlicher Zusammenschluß, der mittels Netzwerkknoten angebunden ist) auf das Internet zugreift oder aber die des Einwahlknoten eines Internetnutzers – bei Zugriff per Modem oder DSL-Anschluß.

<html>
    <head>
        <title>Ihre IP-Adresse (client-ip / remote-ip)</title>
    </head>
    <body>
    <?php
        echo 'Ihre IP-Adresse lautet ' . $_SERVER['REMOTE_ADDR'];
    ?>
    </body>
</html>

PHP IP Beispiel 2: Unter PHP Client IP auflösen

Als nächstes Beispiel soll der zu einer Client-IP gehörige Name des Rechners ermittelt werden, von dem aus die Anfrage an den Webserver gestellt wurde, auf dem das Script läuft. Hierzu ist ein IP-Lookup nötig, der unter PHP mit Hilfe der Funktion gethostbyaddr (get host by address) abgesetzt wird. Mit einem solchen IP-Lookup kann der Name der Domain ermittelt werden, der zu einem im Internet stehenden Server gehört. Die Funktion gethostbyaddr erwartet als Parameter die IP-Adresse des abzufragenden Rechners, die ihr als String übergeben wird. Der Return-Wert enthält den Namen zur angegebenen IP-Adresse oder aber die IP-Adresse, falls der Lookup fehl schlägt.

<?php
    // Name des Rechners ermitteln, über den der Besucher (client) auf die Seite zugreift
    $hostname = gethostbyaddr ($_SERVER['REMOTE_ADDR']);
    // Abfrage des zur IP gehörenden Hostnamen erfolgreich?
    if ($hostname != $_SERVER['REMOTE_ADDR'])
        // Ermittelten Namen zur IP-Adresse ausgeben
        print 'Die IP-Adresse ' . $_SERVER['REMOTE_ADDR'] . ' ist unter dem Namen ' . $hostname . ' erreichbar!';
    else
        // Fehler ausgeben, falls Lookup fehlgeschlagen ist
        print 'Abfrage des Hostnamen für die IP-Adresse ' . $_SERVER['REMOTE_ADDR'] . ' war nicht erfolgreich!';
?>

IP in PHP Beispiel 3: Zum Hostnamen gehörige IP Adresse abfragen

Ähnlich wie beim vorherigen Beispiel, wird im nun folgenden PHP-Script eine Abfrage an einen DNS-Server gestellt. Diesmal allerdings auf umgekehrtem Wege: Hier wird die IP-Adresse eines Rechners, dessen Name (Domain-Name) der Funktion als Parameter angegeben wird, abgefragt. Die hier verwendete PHP Funktion mit dem Namen gethostbyname (get host by name) fragt beim DNS-Server nach der IP-Adresse der angegebenen Domain. Auch hier gilt: Schlägt der Lookup fehl, so liefert die Funktion den Namen der Domain zurück.

<?php
    // Name des Rechners, dessen IP-Adresse ermittelt werden soll
    $hostname = 'www.evocomp.de';
    // DNS-Abfrage durchführen
    $ip = gethostbyname ($hostname);
    // Auflösen des Namen erfolgreich?
    if ($ip != $hostname)
        // Ausgabe der IP-Adresse
        echo 'Der Host ' . $hostname . ' ist unter der IP-Adresse ' . $ip . ' erreichbar!';
    else
        // Ansonsten entsprechende Fehlermeldung
        echo 'Auflösen des Rechners mit dem Hostnamen ' . $hostname . ' fehlgeschlagen!';
?>

¬ Tutorials



¬ Insolvenzrecht