Heim  >  Artikel  >  Backend-Entwicklung  >  Was soll ich tun, wenn die von PHP erhaltene IP ungenau ist?

Was soll ich tun, wenn die von PHP erhaltene IP ungenau ist?

藏色散人
藏色散人Original
2021-02-24 10:03:572973Durchsuche

Die von PHP erhaltene falsche IP kann darauf zurückzuführen sein, dass der Benutzer einen Proxy verwendet, sodass „$_SERVER['REMOTE_ADDR']“ die tatsächliche IP des Benutzers nicht erkennen kann. Die Lösung besteht darin, sie durch die Definition eines „X-Forwarded-For“ zu erhalten „ Entitätsheader echte IP.

Was soll ich tun, wenn die von PHP erhaltene IP ungenau ist?

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP7.1, Dell G3-Computer.

Die von PHP erhaltene IP ist nicht echt?

Mir ist plötzlich etwas eingefallen. Wir verwenden nicht den üblichen $_SERVER[‘REMOTE_ADDR’], um die Intranet-IP zu erhalten (höchstwahrscheinlich die Proxy-IP des Servers). Mit diesem Code gibt es kein Problem, und dann verwenden wir einen Reverse-Proxy (Nginx usw.), und Benutzer können auch Proxys verwenden, sodass ein einfacher $_SERVER[‘REMOTE_ADDR’] die tatsächliche IP des Benutzers nicht erkennen kann.

Aber es gibt einen Parameter, der die Adresse des echten Benutzers über die Proxy-IP ermitteln kann. Erweitern Sie das HTTP-Protokoll. Ein Entitätsheader namens X-Forwarded-For ist definiert.

Denn das bedenken wir vor allem für die Werbestars, schließlich können auch andere als Vermittler fungieren und den Umsatz ankurbeln.

【Empfohlen: PHP-Video-Tutorial

Der Code lautet wie folgt:

//获取用户IP地址
    public function getIp()
    {
        if(!empty($_SERVER["HTTP_CLIENT_IP"]))
        {
            $cip = $_SERVER["HTTP_CLIENT_IP"];
        }
        else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
        {
            $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
        }
        else if(!empty($_SERVER["REMOTE_ADDR"]))
        {
            $cip = $_SERVER["REMOTE_ADDR"];
        }
        else
        {
            $cip = '';
        }
        preg_match("/[\d\.]{7,15}/", $cip, $cips);
        $cip = isset($cips[0]) ? $cips[0] : 'unknown';
        unset($cips);
        return $cip;
    }

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn die von PHP erhaltene IP ungenau ist?. 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