Wenn es darum geht, die IP-Adresse eines Benutzers in PHP abzurufen, gibt es viele Möglichkeiten zur Auswahl. Die genaueste Methode hängt jedoch von einer Reihe von Faktoren ab.
Ein zu berücksichtigender Faktor ist, ob sich der Benutzer hinter einem Proxy befindet. Wenn sich der Benutzer hinter einem Proxy befindet, kann seine IP-Adresse verborgen oder maskiert sein. In diesem Fall müssen Sie eine Methode verwenden, die den Proxy durchdringen kann, um die tatsächliche IP-Adresse des Benutzers zu erhalten.
Ein weiterer zu berücksichtigender Faktor ist, ob Sie einen Whitelist- oder Blacklist-Ansatz verwenden möchten. Ein Whitelist-Ansatz bedeutet, dass Sie nur Datenverkehr von bestimmten IP-Adressen zulassen. Ein Blacklist-Ansatz bedeutet, dass Sie den Datenverkehr von bestimmten IP-Adressen blockieren. Welche Methode Sie wählen, hängt von Ihren spezifischen Bedürfnissen und Sicherheitsanforderungen ab.
Der folgende Code ist ein allgemeiner Konsens darüber, wie die echte IP-Adresse eines Benutzers mithilfe von $_SERVER-Variablen am genauesten abgerufen werden kann:
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; } } } } }
Dieser Code überprüft eine Reihe von $_SERVER-Variablen und versucht, die erste gültige IP-Adresse zurückzugeben. Dieser Code liefert eine genauere Schätzung der tatsächlichen IP-Adresse eines Benutzers, ist aber immer noch nicht perfekt.
Worte der Warnung:
Bedenken Sie, dass $_SERVER[ „REMOTE_ADDR“] stellt trotz möglicher Ungenauigkeiten immer noch die zuverlässigste Quelle einer IP-Adresse dar. Der Zweck des obigen Codes besteht darin, zu versuchen, die IP-Adresse eines Clients zu ermitteln, der sich hinter einem Proxy befindet. Für allgemeine Zwecke empfiehlt es sich, diese Methode mit der direkt von $_SERVER['REMOTE_ADDR'] zurückgegebenen IP-Adresse zu kombinieren und beide zu speichern.
Für die überwiegende Mehrheit der Benutzer liefert der obige Code genaue Ergebnisse. Es ist jedoch möglicherweise nicht narrensicher gegen böswillige Benutzer, die möglicherweise versuchen, Ihr System zu missbrauchen, indem sie ihre eigenen Anforderungsheader einfügen. Halten Sie sich bei geschäftskritischen Anwendungen, die auf IP-Adressen angewiesen sind, an $_SERVER['REMOTE_ADDR'] und vermeiden Sie die Bedienung von Benutzern hinter Proxys.
Das obige ist der detaillierte Inhalt vonWie kann ich die IP-Adresse eines Benutzers in PHP am genauesten abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!