Heim > Backend-Entwicklung > PHP-Tutorial > Wie erhalte ich die tatsächliche IP des Clients? HINWEIS: [8] Undefinierte Variable: IP Wie kann dieser Fehler behoben werden?

Wie erhalte ich die tatsächliche IP des Clients? HINWEIS: [8] Undefinierte Variable: IP Wie kann dieser Fehler behoben werden?

WBOY
Freigeben: 2016-08-20 09:04:00
Original
1356 Leute haben es durchsucht

HTTP_CLIENT_IP
HTTP_X_FORWARD_IP
REMOTE_ADDR

Nacheinander erkennen? Oder gibt es eine andere Möglichkeit? Außer IP138?

Ist bei der folgenden Schreibmethode unter Verwendung der strengsten -Syntax etwas nicht in Ordnung? Wie kann ich sie ändern?

<code>    function Getip() {
        
        if (!empty($_SERVER["HTTP_CLIENT_IP"])) {
            $ip = $_SERVER["HTTP_CLIENT_IP"];
        }
        if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {//获取代理ip
            $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
        }

        if ($ip) {
            $ips = array_unshift($ips, $ip);
        }
        $count = count($ips);
        for ($i = 0; $i < $count; $i++) {
            if (!preg_match("/^(10|172\.16|192\.168)\./i", $ips[$i])) {//排除局域网ip
                $ip = $ips[$i];
                break;
            }
        }
        $tip = $ip ? $ip : $_SERVER['REMOTE_ADDR'];
        if ($tip == "127.0.0.1") {//获得本地真实IP
            return $this -> get_onlineip();
        } else {
            return $tip;
        }

    }</code>
Nach dem Login kopieren
Nach dem Login kopieren

Oder die folgende Funktion nutzen?

<code>// 定义一个函数getIP() 
function getIP() 
{ 
global $ip; 

if (getenv("HTTP_CLIENT_IP")) 
$ip = getenv("HTTP_CLIENT_IP"); 
else if(getenv("HTTP_X_FORWARDED_FOR")) 
$ip = getenv("HTTP_X_FORWARDED_FOR"); 
else if(getenv("REMOTE_ADDR")) 
$ip = getenv("REMOTE_ADDR"); 
else 
$ip = "Unknow"; 

return $ip; 
} 

</code>
Nach dem Login kopieren
Nach dem Login kopieren

Antwortinhalt:

HTTP_CLIENT_IP
HTTP_X_FORWARD_IP
REMOTE_ADDR

Nacheinander erkennen? Oder gibt es eine andere Möglichkeit? Außer IP138?

Ist bei der folgenden Schreibmethode unter Verwendung der strengsten -Syntax etwas nicht in Ordnung? Wie kann ich sie ändern?

<code>    function Getip() {
        
        if (!empty($_SERVER["HTTP_CLIENT_IP"])) {
            $ip = $_SERVER["HTTP_CLIENT_IP"];
        }
        if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {//获取代理ip
            $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
        }

        if ($ip) {
            $ips = array_unshift($ips, $ip);
        }
        $count = count($ips);
        for ($i = 0; $i < $count; $i++) {
            if (!preg_match("/^(10|172\.16|192\.168)\./i", $ips[$i])) {//排除局域网ip
                $ip = $ips[$i];
                break;
            }
        }
        $tip = $ip ? $ip : $_SERVER['REMOTE_ADDR'];
        if ($tip == "127.0.0.1") {//获得本地真实IP
            return $this -> get_onlineip();
        } else {
            return $tip;
        }

    }</code>
Nach dem Login kopieren
Nach dem Login kopieren

Oder die folgende Funktion nutzen?

<code>// 定义一个函数getIP() 
function getIP() 
{ 
global $ip; 

if (getenv("HTTP_CLIENT_IP")) 
$ip = getenv("HTTP_CLIENT_IP"); 
else if(getenv("HTTP_X_FORWARDED_FOR")) 
$ip = getenv("HTTP_X_FORWARDED_FOR"); 
else if(getenv("REMOTE_ADDR")) 
$ip = getenv("REMOTE_ADDR"); 
else 
$ip = "Unknow"; 

return $ip; 
} 

</code>
Nach dem Login kopieren
Nach dem Login kopieren

Diese Methode ist derzeit die sicherste.
ip138 kann nur die IP des Besuchers abrufen. Wenn es sich um einen Serverzugriff handelt, ist es die IP des Servers

Derzeit gibt es nicht viel Forschung zu dieser Anforderung. Bei der normalen Arbeit wird sie durch sequentielle Erkennung ermittelt.

Tatsächlich werden normale Benutzer ihre IP nicht absichtlich verbergen und auch nicht über mehrere Proxy-Ebenen auf Ihre Dienste zugreifen. Für normale Benutzer reicht es aus, die Authentizität der IP zu beurteilen erhalten ist, ist auch ziemlich hoch.

Das ist eine gute Frage. Das lässt sich wirklich nicht einfach lösen. Einige Client-IPs haben Probleme mit Täuschung und Proxying, daher ist es nicht zu 100 % möglich, sie zu erhalten. Wie andere Internetnutzer jedoch sagten, gibt es immer noch sehr wenige normale Benutzer, die Proxys verwenden. Ich glaube, Sie können Ihre eigene Methode verwenden oder auf andere Bibliotheken von Drittanbietern verweisen, um IP zu erhalten

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage