Heim >Backend-Entwicklung >PHP-Problem >Wie erhalte ich die IP-Adresse des Clients in PHP?

Wie erhalte ich die IP-Adresse des Clients in PHP?

青灯夜游
青灯夜游Original
2019-10-15 13:45:383925Durchsuche

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[&#39;REMOTE_ADDR&#39;];
    }
    $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!

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