Die Variablen, die zum Erhalten der Client-IP in PHP verwendet werden, sind:
$_SERVER['HTTP_CLIENT_IP'] Dies Der Header existiert, ist jedoch selten und nicht unbedingt von allen Servern implementiert. Der Kunde kann gefälscht sein. (Empfohlenes Lernen: PHP-Programmierung vom Einstieg bis zur Kompetenz)
$_SERVER['HTTP_X_FORWARDED_FOR'] hat eine Standarddefinition und wird zur Identifizierung der Client-IP-Adresse nach dem HTTP-Proxy verwendet. Das Format ist : clientip,proxy1,proxy2. Eine ausführliche Erklärung finden Sie unter http://zh.wikipedia.org/wiki/X-Forwarded-F.... Der Kunde kann gefälscht sein.
$_SERVER['REMOTE_ADDR'] ist die letzte IP, die Ihrem Server die Hand gibt. Es kann sich um den Proxyserver des Benutzers oder seinen eigenen Reverse-Proxy handeln. Der Client kann nicht gefälscht werden.
Parameter, die vom Kunden gefälscht werden können, müssen gefiltert und überprüft werden! Viele Leute denken, dass der Inhalt der Variablen $_SERVER vertrauenswürdig ist. Dies ist jedoch nicht der Fall.
Wenn Sie unbedingt die echte IP des Benutzers erhalten möchten
Wenn Anti-Crawler und Anti-Votes verwendet werden, vertrauen wir nichts, was der Kunde fälschen kann. Dies wird strikt eingehalten.
Es gibt kein CDN, Benutzer stellen eine direkte Verbindung zu unserem PHP-Server her
Verwenden Sie in diesem Fall die TCP-Layer-Handshake-IP, $_SERVER['REMOTE_ADDR']
Bei Verwendung von Nginx zum Erreichen des Lastausgleichs in einem selbst erstellten Cluster
In diesem Fall kann der PHP-Anwendungsserver nicht der Außenwelt ausgesetzt werden. Wir erhalten die echte IP in Nginx und Senden Sie es dann an den PHP-Server.
location /{ proxy_set_header client-real-ip $remote_addr; }
client-real-ip kann beliebig benannt werden. Wir leiten die IP des Nginx-Handshakes in der TCP-Schicht an PHP weiter.
Beim Abrufen der Quelle vom PHP-Server
CDN leitet die Handshake-IP des Clients weiter. Einzelheiten finden Sie in der CDN-Dokumentation.
Natürlich können wir das Geschäft, das eine strenge Überprüfung erfordert, auch an einen Domainnamen der zweiten Ebene binden und unseren eigenen Nginx-Server separat verwenden, um CDN zu vermeiden.
Das obige ist der detaillierte Inhalt vonSo identifizieren Sie echte IP in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!