Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich die IP-Adresse eines Benutzers in PHP am genauesten abrufen?

Wie kann ich die IP-Adresse eines Benutzers in PHP am genauesten abrufen?

Susan Sarandon
Freigeben: 2024-12-19 11:48:18
Original
230 Leute haben es durchsucht

How Can I Most Accurately Retrieve a User's IP Address in PHP?

Was ist der genaueste Weg, die korrekte IP-Adresse eines Benutzers in PHP abzurufen?

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;
                }
            }
        }
    }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage