Heim >Backend-Entwicklung >PHP-Tutorial >Wie erhalte ich die Client-IP-Adresse in Laravel genau?
Erhalten der Client-IP-Adresse in Laravel 5
Das Abrufen der IP-Adresse eines Clients in Laravel scheint mit $_SERVER["REMOTE_ADDR"] unkompliziert zu sein. Im Gegensatz zum Kern-PHP gibt Laravel jedoch die IP des Servers anstelle der des Besuchers zurück.
Um dieses Problem zu beheben, verwendet Laravel Request::ip(). Diese Methode nutzt das Request-Objekt von Symfony, um die IP-Adresse des Clients zu ermitteln.
Intern ruft Request::ip() getClientIps() auf, das einen robusten Ansatz zum Extrahieren der IP-Adresse des Clients verwendet. Es ruft zunächst die IP-Adresse des Servers (REMOTE_ADDR) ab und prüft, ob ein vertrauenswürdiger Proxy verwendet wird.
Wenn ein vertrauenswürdiger Proxy erkannt wird, werden die Anforderungsheader basierend auf der vertrauenswürdigen Header-Konfiguration von Laravel überprüft. Bestimmte Header wie X-Forwarded-For und X-Client-IP werden analysiert, um die IP-Adresse des Clients zu extrahieren.
Diese Header können jedoch unzuverlässig sein, insbesondere wenn sich der Client hinter mehreren Proxys befindet. Daher wird die IP-Adresse der Anfrage als letztes Element im Array $clientIps hinzugefügt.
Die IP-Adresse des Clients wird dann als erstes Element in $clientIps ausgewählt. Diese IP-Adresse kann die IP der Anfrage oder einer der vertrauenswürdigen Proxys sein.
Um die Genauigkeit sicherzustellen, wird jede IP-Adresse in $clientIps anhand einer Liste vertrauenswürdiger Proxys validiert. Wenn eine IP-Adresse zu einem vertrauenswürdigen Proxy gehört, wird sie aus dem Array entfernt.
Letztendlich gibt Request::ip() ein Array von IP-Adressen zurück. Das erste Element dieses Arrays stellt die nicht vertrauenswürdige Client-IP-Adresse dar, gefolgt von den IPs aller vertrauenswürdigen Proxys.
Das obige ist der detaillierte Inhalt vonWie erhalte ich die Client-IP-Adresse in Laravel genau?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!