Heim  >  Artikel  >  Backend-Entwicklung  >  So erhalten Sie mit PHP die tatsächliche IP des Benutzer-Clients

So erhalten Sie mit PHP die tatsächliche IP des Benutzer-Clients

不言
不言Original
2018-06-08 09:35:502871Durchsuche

Dieser Artikel stellt hauptsächlich die Methode zur Verwendung von PHP vor, um die echte IP des Benutzer-Clients zu erhalten. Jetzt kann ich ihn mit Ihnen teilen

Tatsächlich. Das Erhalten der IP-Adresse des Kunden ist keine einfache Aufgabe. Aufgrund von IP-Spoofing und Agenturproblemen kann die Authentizität der IP-Adresse des Kunden nicht gewährleistet werden. Wir versuchen jedoch, umfassendere Methoden zu verwenden, um die IP-Adresse des Kunden zu erhalten Hier ist die folgende Methode zum Abrufen der echten IP des Benutzer-Clients in PHP. Schauen wir uns das an

Das Abrufen der IP-Adresse des Clients ist eigentlich keine einfache Aufgabe, da es IP-Spoofing- und Proxy-Probleme gibt. Daher wird die Authentizität der IP-Adresse des Clients nicht berücksichtigt und kann nicht zu 100 % genau sein. Wir versuchen jedoch, eine umfassendere Methode zur Ermittlung der tatsächlichen IP-Adresse des Clients zu finden 🎜>

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);

Jetzt müssen wir diesen Code ändern. Hier werden zwei Funktionen verwendet, getenv() und strcasecmp(). Wenn der Wert abgerufen werden kann, gibt sie den Wert zurück. andernfalls wird false zurückgegeben.

$_SERVER Es ist das superglobale Variablenarray des Servers. Sie können auch $_SERVER['REMOTE_ADDR'] verwenden, um die IP-Adresse des Clients abzurufen. Der Unterschied zwischen den beiden besteht darin, dass getenv dies nicht tut Unterstützt PHP, das im isapi-Modus von IIS ausgeführt wird. Die Verwendung der String-Funktion besteht darin, String1 und String2 zu vergleichen. Wenn String1 größer als String2 ist, wird a zurückgegeben Wenn es kleiner ist, wird eine Zahl kleiner als 0 zurückgegeben. Die Funktion

verwendet zuerst die IP-Adresse des Kunden. Wenn dies nicht funktioniert, versuchen Sie es mit der Proxy-Methode Funktioniert nicht, verwenden Sie REMOTE_ADDR.

Ich habe auch eine detailliertere Methode zur IP-Erkennung gesehen, die IP-Spoofing und mehrere Proxy-Codes berücksichtigt. Die Methode ist ähnlich 1. PHP ohne Proxyserver, um Client-IP zu erhalten:

REMOTE_ADDR = Client-IP

HTTP_X_FORWARDED_FOR = Kein Wert oder nicht angezeigt

2. Bei Verwendung transparenter Proxyserver : Transparente Proxys


REMOTE_ADDR = Letzte Proxyserver-IP

HTTP_X_FORWARDED_FOR = Echte Client-IP (bei der Durchleitung über mehrere Proxyserver ist dieser Wert ähnlich: 221.5.252.160, 203.98.182.163, 203.129.72.215 )

Diese Art von Proxyserver sendet immer noch die echte IP des Clients an das Zugriffsobjekt, wodurch der Zweck, die wahre Identität zu verbergen, nicht erreicht werden kann.

3. Verwenden Sie gewöhnliches anonymes PHP Proxyserver zum Abrufen der Client-IP: Anonyme Proxys

REMOTE_ADDR = letzte Proxyserver-IP

HTTP_X_FORWARDED_FOR = Proxyserver-IP (nachher) Wenn mehrere Proxyserver vorhanden sind, ist dieser Wert ähnlich: 203.98.182.163, 203.98.182.163, 203.129.72.215)

In diesem Fall wird die tatsächliche IP des Clients ausgeblendet, aber der Client wird dem Zugriffsobjekt offengelegt. Der Zugriff erfolgt über Proxyserver.


4. Die Verwendung betrügerischer Proxyserver: Verzerrung von Proxys

REMOTE_ADDR = Proxyserver-IP

HTTP_X_FORWARDED_FOR = Zufällige IP (bei der Durchleitung über mehrere Proxyserver ist dieser Wert ähnlich : 220.4.251.159, 203.98.182.163, 203.129.72.215)

In diesem Fall zeigt sich auch, dass der Client einen Proxyserver verwendet, aber eine gefälschte zufällige IP (220.4.251.159) durch die echte des Clients ersetzt IP, um es zu täuschen.

5. Verwenden Sie PHP eines Proxyservers mit hoher Anonymität, um die Client-IP zu erhalten: High Anonymity Proxies (Elite-Proxys)

REMOTE_ADDR = Proxyserver IP

HTTP_X_FORWARDED_FOR = kein Wert oder nicht angezeigtUnabhängig davon, ob es sich um REMOTE_ADDR oder HTTP_FORWARDED_FOR handelt, sind diese Header-Nachrichten aufgrund unterschiedlicher Browser möglicherweise nicht verfügbar. Verschiedene Netzwerkgeräte senden daher möglicherweise unterschiedliche IP-Header-Nachrichten. Der von PHP mit $_SERVER["REMOTE_ADDR"] und $_SERVER["HTTP_X_FORWARDED_FOR"] erhaltene Wert kann ein Nullwert oder ein „unbekannter“ Wert sein.

Das Obige ist der gesamte Inhalt dieses Artikels I Ich hoffe, es wird für das Lernen aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website!

Verwandte Empfehlungen:

So implementieren Sie Anti-Hotlinking in PHP

PHP erhält IP-Informationen, PHP erhält IP

Das obige ist der detaillierte Inhalt vonSo erhalten Sie mit PHP die tatsächliche IP des Benutzer-Clients. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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