Heim >Backend-Entwicklung >PHP-Problem >Wie erhalte ich die IP-Adresse des Clients in PHP?
1. Wenn kein Proxyserver verwendet wird
REMOTE_ADDR = Client-IP
HTTP_X_FORWARDED_FOR = Kein Wert oder wird nicht angezeigt
$ip = $_SERVER['REMOTE_ADDR'];
2. Transparenten Proxy verwenden
REMOTE_ADDR = Letzte Proxyserver-IP
HTTP_X_FORWARDED_FOR = echte IP des Clients (beim Durchlaufen mehrerer 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 Clients an die Anfrage Objekt, die echte IP kann nicht ausgeblendet werden.
$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 über den Proxyserver zugreift.
4. Verwenden Sie einen betrügerischen Proxyserver
REMOTE_ADDR = Proxyserver-IP
HTTP_X_FORWARDED_FOR = Zufällige IP (Beim Durchlaufen mehrerer Proxyserver ist dieser Wert ähnlich: 220.4.251.159, 203.98.182.163, 203.129.72.215)
Der Server kann beim Durchlaufen des Proxyservers identifizieren zugegriffen, 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 nicht angezeigt
Bei Verwendung dieser Art von Proxy geben verschiedene Browser und verschiedene Geräte unterschiedliche IP-Header-Informationen zurück, daher verwendet PHP $_SERVER["REMOTE_ADDR"], $_SERVER [" HTTP_X_FORWARDED_FOR"] Der erhaltene Wert kann ein Nullwert oder ein „unbekannter“ Wert sein.
Der PHP-IP-Code lautet 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配置信息 }
Weitere PHP-bezogene Kenntnisse finden Sie auf der PHP-Chinese-Website !
Das obige ist der detaillierte Inhalt vonWie erhalte ich die IP-Adresse des Clients in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!