Heim >Backend-Entwicklung >PHP-Problem >Was soll ich tun, wenn die von PHP erhaltene IP ungenau ist?
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.
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!