Benutzer-IP-Adresse in PHP abrufen

Subodh Poudel 30 Januar 2023
PHP
  1. Verwenden Sie $_SERVER['REMOTE_ADDR'], um die IP-Adresse des Benutzers in PHP zu finden
  2. Verwenden Sie $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_CLIENT_IP'] und $_SERVER['HTTP_X_FORWARDED_FOR'], um die IP-Adresse des Benutzers zu ermitteln
  3. Verwendung des ternären Operators und der Funktion isset(), um die IP-Adresse des Benutzers zu finden
Benutzer-IP-Adresse in PHP abrufen

Wir werden eine Möglichkeit vorstellen, von einem Server in PHP aus mit der superglobalen Variablen $_SERVER auf die IP-Adresse des Benutzers zuzugreifen, wobei REMOTE_ADDR das einzige Array-Element ist. Es wird als $_SERVER['REMOTE_ADDR'] verwendet.

Wir zeigen eine andere Möglichkeit, mit dem bedingten Ausdruck auf die IP-Adresse des Benutzers in PHP zuzugreifen, um zu überprüfen, ob die IP-Adressen des Benutzers aus dem gemeinsam genutzten Internet, von einem Proxy oder der tatsächlichen IP-Adresse stammen. Diese Methode verwendet Array-Elemente wie HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR und REMOTE_ADDR.

Wir zeigen Ihnen eine Kurzmethode, um die IP-Adresse des Benutzers in PHP mithilfe des ternären Operators und der Funktion isset() abzurufen. Diese Methode verwendet auch die Array-Elemente wie HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR und REMOTE_ADDR in der superglobalen Variablen $_SERVER.

Verwenden Sie $_SERVER['REMOTE_ADDR'], um die IP-Adresse des Benutzers in PHP zu finden

Wir können den Ausdruck $_SERVER['REMOTE_ADDR'] verwenden, um die IP-Adresse zu ermitteln, von der aus der Benutzer auf die aktuelle Seite zugreift. $_SERVER ist die superglobale Variable in PHP und verwendet eine Vielzahl von Array-Elementen als Argumente. Wir verwenden das REMOTE_ADDR als Array-Element in der Variablen $_SERVER, um auf die tatsächliche IP-Adresse des Clients zuzugreifen. Beachten Sie, dass $_SERVER['REMOTE_ADDR'] nicht immer in allen Fällen die richtige IP-Adresse des Clients angibt. Wir werden die anderen Fälle unten diskutieren. Stellen Sie sicher, dass Ihre Server-API (SAPI) gut konfiguriert ist, damit der obige Ausdruck die tatsächliche IP der Verbindung zurückgibt.

Im folgenden Beispiel wird der localhost als Server verwendet. Somit wird die Loopback-IP-Adresse zurückgegeben. Informationen zur Loopback-Adresse finden Sie unter hier. Angenommen, die URL des folgenden PHP-Skripts lautet http://localhost/index.php. Es gibt die IP-Adresse des lokalen Computers als ::1 aus. ::1 ist die IPv6-Darstellung des localhost.

Weisen Sie beispielsweise einer Variablen ip_addr das $_SERVER['REMOTE_ADDR'] zu. Drucken Sie dann die Variable mit dem echo.

Beispielcode:

# php 7.x
<?php
$ip_add = $_SERVER['REMOTE_ADDR'];
echo "The user's IP address is - ".$ip_add;
?>

Ausgabe:

The user's IP address is - ::1

Verwenden Sie $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_CLIENT_IP'] und $_SERVER['HTTP_X_FORWARDED_FOR'], um die IP-Adresse des Benutzers zu ermitteln

Wir können die Array-Elemente der superglobalen Variablen $_SERVER wie $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_CLIENT_IP'] und $_SERVER['HTTP_X_FORWARDED_FOR'] verwenden, um die IP-Adresse von zu ermitteln der Benutzer in PHP. Verwenden Sie $_SERVER['REMOTE_ADDR'], um die tatsächliche IP-Adresse des Benutzers zu ermitteln. Verwenden Sie $_SERVER['HTTP_CLIENT_IP'], um die IP-Adresse zu ermitteln, wenn der Benutzer über das gemeinsam genutzte Internet auf die Seite zugreift. Verwenden Sie $_SERVER['HTTP_X_FORWARDED_FOR'], um die IP-Adresse zu ermitteln, wenn der Benutzer einen Proxy verwendet, um auf die Webseite zuzugreifen. Beachten Sie, dass Header wie HTTP_X_FORWARDED_FOR und HTTP_CLIENT_IP gefälscht werden können, da dies von jedem festgelegt werden kann. Manchmal stellen sie möglicherweise nicht die tatsächliche IP-Adresse des Clients dar.

Verwenden Sie beispielsweise die Funktion empty(), um zu überprüfen, ob $_SERVER['HTTP_CLIENT_IP'] etwas enthält. Wenn es enthält, weisen Sie das Tal in der Variablen $ip zu und drucken Sie i.
Führen Sie erneut eine Überprüfung für $_SERVER['HTTP_X_FORWARDED_FOR'] durch, weisen Sie den Wert zu und drucken Sie ihn aus, falls vorhanden. Führen Sie eine ähnliche Operation für $_SERVER['REMOTE_ADDR'] aus.

Im folgenden Beispiel gibt $_SERVER['REMOTE_ADDR'] die IP-Adresse zurück, da der Benutzer keine Proxys oder eine gemeinsame Internetverbindung verwendet. Lesen Sie das PHP Manual, um mehr über das $_SERVER-Array zu erfahren.

Beispielcode:

#php 7.x
<?php if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    echo $ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    echo $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
    echo $ip = $_SERVER['REMOTE_ADDR'];
}
?> 

Ausgabe:

 ::1

Verwendung des ternären Operators und der Funktion isset(), um die IP-Adresse des Benutzers zu finden

Wir können eine Kurzhandmethode verwenden, um die IP-Adresse des Benutzers in PHP mithilfe des ternären Operators zu ermitteln. Bei dieser Methode prüft die Methode isset(), ob das Array die angegebenen Elemente oder die Header-Dateien enthält.

Verwenden Sie beispielsweise die Funktion isset(), um zu überprüfen, ob das Array HTTP_CLIENT_IP enthält. Wenn die Bedingung erfüllt ist, wird HTTP_CLIENT_IP gesetzt. Wenn die Bedingung fehlschlägt, wird mit der Funktion isset() geprüft, ob das Array HTTP_X_FORWARDED_FOR enthält. Wenn die Bedingung erfüllt ist, wird in ähnlicher Weise HTTP_X_FORWARDED_FOR und REMOTE_ADDR festgelegt, wenn die Bedingung fehlschlägt.

Im folgenden Beispiel verwendet der Client keinen Proxy oder kein freigegebenes Internet. Daher wird $_SERVER['REMOTE_ADDR'] ausgeführt. Bitte lesen Sie die MSDN Web Docs, um mehr über den ternären Operator zu erfahren.

Beispielcode:

#php 7.x
<?php
$ip = isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
echo "The user IP Address is - ". $ip;
?>

Ausgabe:

The user IP Address is - ::1
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn