function GetIP(){ if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR"); else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) $ip = $_SERVER['REMOTE_ADDR']; else $ip = "unknown"; return($ip); }
regist=off problem
if ($register_globals!=1) {
@extract($_SERVER, EXTR_SKIP);
@extract($_COOKIE, EXTR_SKIP); extract($_SESSION, EXTR_SKIP);
@extract($_POST, EXTR_SKIP);
@extract( $_ENV, EXTR_SKIP);
}
Unter anderem ist REMOTE_ADDR leichter zu verstehen; was HTTP_x_FORWARDED_FOR betrifft, habe ich einige Informationen gefunden und Folgendes gesagt:
In PHP wird $_SERVER["REMOTE_ADDR"] verwendet, um die IP-Adresse des Clients abzurufen. Wenn der Client jedoch einen Proxyserver für den Zugriff verwendet, wird die IP-Adresse des Proxyservers und nicht die tatsächliche IP-Adresse des Clients abgerufen. Um die echte IP-Adresse des Clients über einen Proxyserver zu erhalten, lesen Sie sie mit $_SERVER["HTTP_X_FORWARDED_FOR"] aus.
Es ist jedoch zu beachten, dass nicht jeder Proxyserver $_SERVER["HTTP_X_FORWARDED_FOR"] verwenden kann, um die tatsächliche IP des Clients zu lesen. Einige der von dieser Methode gelesenen IPs sind immer noch die IP des Proxyservers.
Was HTTP_CLIENT_IP betrifft, hieß es in einem Beitrag
'HTTP_CLIENT_IP' ist die IP des Benutzers, 'HTTP_X_FORWARDED_FOR' ist die IP des Proxys
Diese IP-Header-Nachrichten sind möglicherweise nicht verfügbar (aufgrund unterschiedlicher Browser und verschiedener Netzwerkgeräte). sendet möglicherweise unterschiedliche IP-Header-Nachrichten. Daher versucht PHP, jede IP-Header-Nachricht zu beurteilen, und wenn es eine gibt, nimmt sie eine davon