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!';
?>
Letzte Posts aus unserem Forum

Wer kennt .....

Hallo erstmal wer kennt von euch einen WEbprogrammieren,desginer der mir eine Seite erstellen kann ,Communityportal sowas in der art wie ... » mehr

von NCWebmaster am Mittwoch, 7. Oktober 2009 00:32 in PHP - bisher 2 Antworten
Letzter Beitrag: Montag, 17. Dezember 2012 16:57 von maharadja

...einen guten Onlineshop für Taufringe? Ich habe bisher Taufringe Direkt gefunden und wollte mal nachhaken, ob der Shop für Taufringe wirklich so ... » mehr

Webentwickler Konferenz in Hamburg

Hallo Zusammen, Am 20./21. Mai findet in Hamburg die erste Developer Conference 2011 statt. Wie der Name bereits verrät, handelt die Konferenz rund ... » mehr

von devcon-hamburg am Dienstag, 12. April 2011 16:50 in PHP - noch nicht beantwortet

bedingte Weiterleitung in Kontaktformularen

Hallo zusammen, ich habe ein kleines Problem: Ich brauche bei der Entwicklung eines Kontaktformulares für eine Website eine bedingte Weiterleitung ... » mehr

von scatha am Donnerstag, 10. März 2011 01:12 in PHP - noch nicht beantwortet

Gesucht: Auslesen einer externen Website

Mein vorhaben ist recht simpel aber ich bin php noob (hoffe das entschuldigt es nen bissl xD) und hab kp wie ichs anfangen soll. Und zwar möchte ich ... » mehr

von HeathenMan am Dienstag, 1. Februar 2011 22:57 in PHP - bisher 1 Antwort
Letzter Beitrag: Donnerstag, 3. Februar 2011 14:43 von alm

Hallo, am einfachsten und kompaktesten kann man das mit einem regulären Ausdruck machen. Einfach mal nach der Funktion preg_match_all suchen und den ... » mehr

Zeilenumbruch in der Bildergalerie-Beschriftung

Hallo, die Bildergalerie mit php und js ist super, jedoch möchte ich gern zu meinen Bildern verschiedene Bemerkungen machen und zwar untereinander, ... » mehr

von Sylma am Mittwoch, 26. Januar 2011 01:13 in PHP - bisher 1 Antwort
Letzter Beitrag: Freitag, 28. Januar 2011 10:16 von alm

Hallo, ich nehme an, dass \n im Beschreibungstext nicht funktioniert aber versuchen kann man es. Ansonsten: Schon mal mit einer UTF-Sequenz ... » mehr

¬ Tutorials



¬ Insolvenzrecht