Heim >Backend-Entwicklung >PHP-Tutorial >PHP erhält die IP des Clients
1.REMOTE_ADDR: Die IP-Adresse des Computers des Benutzers, der die aktuelle Seite durchsucht
2.HTTP_X_FORWARDED_FOR: Das Gateway des Computers des Benutzers, der die aktuelle Seite durchsucht
3.HTTP_CLIENT_IP: IP des Clients
Verwenden Sie in PHP $_SERVER["REMOTE_ADDR"], 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 Proxys Server.
Zu beachten ist außerdem, dass der mit $_SERVER["HTTP_X_FORWARDED_FOR"] erhaltene Wert leer ist, wenn der Client nicht über einen Proxyserver zugreift.
/** * 获取客户端IP * @return string */ function get_client_ip() { $realip = ""; if ($_SERVER['HTTP_X_FORWARDED_FOR'] && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_FORWARDED_FOR'])) { $realip = $_SERVER['HTTP_X_FORWARDED_FOR']; } else if ($_SERVER['HTTP_CLIENT_IP'] && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) { $realip = $_SERVER['HTTP_CLIENT_IP']; } else if($_SERVER['REMOTE_ADDR'] && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) { $realip = $_SERVER['REMOTE_ADDR']; } return $realip; }