Heim >Backend-Entwicklung >PHP-Problem >So erhalten Sie die Client-IP-Adresse in PHP
So erhalten Sie die Client-IP-Adresse in PHP
1. Wenn kein Proxyserver verwendet wird
REMOTE_ADDR = Client-IP HTTP_X_FORWARDED_FOR = Kein Wert oder wird nicht angezeigt (empfohlenes Lernen: PHP-Video-Tutorial)
$ip = $_SERVER['REMOTE_ADDR'];
2. Transparenten Proxy verwenden
REMOTE_ADDR = Letzte Proxyserver-IP
HTTP_X_FORWARDED_FOR = Echte Client-IP (bei der Weiterleitung über mehrere Proxyserver ist dieser Wert ähnlich: 221.5.252.160, 203.98.182.163, 203.129.72.215)
Diese Art von Proxy sendet auch die echte IP des Kunden an das anfragende Objekt und kann die echte IP nicht verbergen.
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
3. Verwenden Sie einen gewöhnlichen anonymen Proxyserver
REMOTE_ADDR = Letzte Proxyserver-IP
HTTP_X_FORWARDED_FOR = Proxyserver-IP ( Beim Durchlaufen mehrerer Proxyserver ist dieser Wert ähnlich: 203.98.182.163, 203.98.182.163, 203.129.72.215)
Dadurch wird die tatsächliche IP des Clients ausgeblendet, aber der Server weiß, dass der Client den Proxyserver durchläuft zugegriffen.
4. Verwenden Sie einen betrügerischen Proxyserver
REMOTE_ADDR = Proxyserver-IP
HTTP_X_FORWARDED_FOR = zufällige IP (Wenn Beim Durchlaufen mehrerer Proxyserver ist dieser Wert ähnlich: 220.4.251.159, 203.98.182.163, 203.129.72.215)
Der Server kann den Zugriff über den Proxyserver identifizieren, aber die gefälschte IP wird an den Zielserver gesendet.
5. Verwenden Sie einen Proxy mit hoher Anonymität
REMOTE_ADDR = Proxyserver-IP HTTP_X_FORWARDED_FOR = Kein Wert oder wird nicht angezeigt
Verwenden Sie dies: Wenn Sie einen Proxy verwenden, geben verschiedene Browser und verschiedene Geräte unterschiedliche IP-Header-Informationen zurück, sodass der von PHP mithilfe von $_SERVER["REMOTE_ADDR"] und $_SERVER["HTTP_X_FORWARDED_FOR"] erhaltene Wert ein Nullwert oder ein "unbekannter" sein kann " Wert.
PHP erhält den IP-Code wie folgt:
public function ip() { //strcasecmp 比较两个字符,不区分大小写。返回0,>0,<0。 if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $ip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { $ip = getenv('REMOTE_ADDR'); } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { $ip = $_SERVER['REMOTE_ADDR']; } $res = preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : ''; echo $res; //dump(phpinfo());//所有PHP配置信息 }
Das obige ist der detaillierte Inhalt vonSo erhalten Sie die Client-IP-Adresse in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!