So rufen Sie die IP-Adresse eines Benutzers in PHP genau ab
Das Abrufen der IP-Adresse eines Benutzers in PHP kann aufgrund der Verwendung eine herausfordernde Aufgabe sein von Proxys und anderen Faktoren, die die wahre IP-Adresse verschleiern können. Es stehen zwar mehrere Methoden zur Verfügung, von denen jede ihre eigenen Einschränkungen hat, aber das Verständnis des effektivsten Ansatzes kann einen genauen IP-Abruf gewährleisten.
Eine gängige Methode ist die Verwendung der globalen Variablen $_SERVER. Es bietet verschiedene Header, die möglicherweise IP-Informationen enthalten. Unter anderem enthält REMOTE_ADDR die IP-Adresse des letzten bekannten Clients; Diese Methode gilt jedoch nicht als zuverlässig, da sie leicht gefälscht werden kann.
Um dieses Problem zu beheben, haben PHP-Entwickler einen umfassenderen Ansatz entwickelt, der mehrere $_SERVER-Header nutzt. Bei diesem Ansatz wird über HTTP_CLIENT_IP nach gemeinsam genutzten Internet-/ISP-IP-Adressen gesucht. Darüber hinaus werden IP-Adressen untersucht, die Proxys über Header wie HTTP_X_FORWARDED_FOR, HTTP_X_FORWARDED, HTTP_X_CLUSTER_CLIENT_IP, HTTP_FORWARDED_FOR usw. passieren HTTP_FORWARDED.
Es wird davon ausgegangen, dass einer dieser Header eine genauere IP-Adresse liefert. Um die Gültigkeit sicherzustellen, wird die Funktion validate_ip verwendet, um private Netzwerke und ungültige IP-Adressen herauszufiltern.
Hier ist eine vereinfachte Version des in der Frage bereitgestellten Codes:
function get_ip_address(){ foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key){ if (array_key_exists($key, $_SERVER) === true){ foreach (explode(',', $_SERVER[$key]) as $ip){ $ip = trim($ip); // just to be safe if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false){ return $ip; } } } } }
Obwohl diese Methode die Genauigkeit erheblich verbessert, bleibt sie anfällig für böswillige Benutzer, die möglicherweise ihre eigenen Anforderungsheader einfügen. Für geschäftskritische Anwendungen wird empfohlen, sich ausschließlich auf REMOTE_ADDR zu verlassen.
Das obige ist der detaillierte Inhalt vonWie kann ich die IP-Adresse eines Benutzers in PHP genau ermitteln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!