Anhand der IP-Adresse eines Besuchers Ihrer Seite können Sie einiges über ihn erfahren – Land, Stadt, Name und E-Mail-Adresse des Internetanbieters usw. Der Hauptwert besteht jedoch darin, dass die IP als Besucher-ID für serverseitige Skripte dienen kann. Nachfolgend wird beschrieben, wie Sie die IP-Adresse mit PHP ermitteln können.
Es ist notwendig
Grundkenntnisse in PHP
Anleitung
Schritt 1
Um die IP-Adresse aus den an den Browser-Anfrageserver gesendeten Headern zu extrahieren, verwenden Sie die Funktion getenv. Es liest die ihm angegebenen Werte aus den Umgebungsvariablen. Eine Variable namens REMOTE_ADDR wird verwendet, um die IP-Adresse des Besuchers zu speichern. Der Client kann jedoch einen Proxy-Server verwenden. In diesem Fall enthält die Variable seine Adresse und nicht die gewünschte. Sie können feststellen, dass der Websurfer eine Zwischen-IP verwendet, indem Sie sich die Umgebungsvariable HTTP_VIA ansehen. Darin werden alle Adressen der an der Kette beteiligten Proxy-Server durch Kommas getrennt eingetragen. Zwischenserver müssen die Adresse des Besuchers in einer Variablen namens HTTP_X_FORWARDED_FOR platzieren, dies hängt jedoch vollständig von den Proxy-Einstellungen ab. Das heißt, um möglichst viele Möglichkeiten zur Ermittlung der IP-Adresse abzudecken, müssen Sie den Inhalt von mindestens drei Variablen prüfen: REMOTE_ADDR, HTTP_X_FORWARDED_FOR und vorzugsweise
Schritt 2
Sie können die Überprüfung aller drei Variablen in einer Zeile PHP-Code kombinieren, zum Beispiel wie folgt:
$ ipAddr = getenv ('HTTP_CLIENT_IP') oder $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') oder $ ipAddr = getenv ('REMOTE_ADDR');
Nachdem Sie auf diese Weise den Wert der IP-Adresse erhalten haben, ist es ratsam, diese von möglichen Verzerrungen und unnötigen Zeichen zu befreien. Dazu können Sie einen regulären Ausdruck verwenden:
$ ipAddr = trimmen (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
Schritt 3
Es bleibt, beide Codezeilen zu einer Funktion zu kombinieren:
Funktion getIP() {
$ ipAddr = getenv ('HTTP_CLIENT_IP') oder $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') oder $ ipAddr = getenv ('REMOTE_ADDR');
zurück trimmen (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
}