Heim >Backend-Entwicklung >PHP-Tutorial >So erhalten Sie die echte IP des Benutzer-Clients in PHP
Einige Analysen von Ideen zur Ermittlung der tatsächlichen IP des Kunden sind möglicherweise nicht korrekt, aber zumindest ist die Genauigkeit viel besser.
Der Code lautet wie folgt:
function GetIP(){ if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR"); else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) $ip = $_SERVER['REMOTE_ADDR']; else $ip = "unknown"; return($ip); }
regist=off problem
if ($register_globals!=1) {
@extract($ _SERVER, EXTR_SKIP);
@extract($_COOKIE, EXTR_SKIP);
@extract($_SESSION, EXTR_SKIP);
@extract($ _POST, EXTR_SKIP);
@extract($_FILES, EXTR_SKIP);
@extract($_ENV, EXTR_SKIP);
REMOTE_ADDR Unter ihnen ist es besser zu verstehen, dass das
php-Handbuch
besagt, dass es sich um eine vorgegebene Variable handelt. Was HTTP_x_FORWARDED_FOR betrifft, habe ich einige Informationen im Internet gefunden und gesagt: Verwenden Sie $_SERVER["REMOTE_ADDR"] in PHP, um es zu erhalten it Die IP-Adresse des Clients. Wenn der Client jedoch einen Proxyserver für den Zugriff verwendet, ist die erhaltene IP-Adresse die IP-Adresse des Proxyservers und nicht die tatsächliche IP-Adresse des Clients. Um die echte IP-Adresse des Clients über einen Proxyserver zu erhalten, lesen Sie sie mit $_SERVER["HTTP_X_FORWARDED_FOR"] aus. Es ist jedoch zu beachten, dass nicht jeder Proxyserver $_SERVER["HTTP_X_FORWARDED_FOR"] verwenden kann, um die echte IP des Clients zu lesen. Einige der von dieser Methode gelesenen IPs sind immer noch die IP des Proxyservers.
Was HTTP_CLIENT_IP betrifft, gibt es einen Beitrag, der besagt, dass
'HTTP_CLIENT_IP' die IP des Benutzers und 'HTTP_X_FORWARDED_FOR' die IP des Proxys ist
Diese IP-Header-Nachrichten sind möglicherweise nicht verfügbar (aufgrund unterschiedlicher Browser). Verschiedene Netzwerkgeräte können unterschiedliche IP-Header-Nachrichten senden. Daher versucht PHP, jede IP-Header-Nachricht zu beurteilen, und wenn es eine gibt, nimmt sie eine davon
Das obige ist der detaillierte Inhalt vonSo erhalten Sie die echte IP des Benutzer-Clients in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!