Maison  >  Article  >  développement back-end  >  Comment obtenir l’adresse IP du client avec précision dans Laravel ?

Comment obtenir l’adresse IP du client avec précision dans Laravel ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-20 08:32:31729parcourir

How to Get Client IP Address Accurately in Laravel?

Obtention de l'adresse IP d'un client dans Laravel 5

Obtenir l'adresse IP d'un client dans Laravel peut sembler simple en utilisant $_SERVER["REMOTE_ADDR"]. Cependant, contrairement au noyau PHP, Laravel renvoie l'adresse IP du serveur au lieu de celle du visiteur.

Pour résoudre ce problème, Laravel utilise Request::ip(). Cette méthode utilise l'objet Request de Symfony pour déterminer l'adresse IP du client.

En interne, Request::ip() appelle getClientIps(), qui utilise une approche robuste pour extraire l'adresse IP du client. Il récupère d'abord l'adresse IP du serveur (REMOTE_ADDR) et vérifie si un proxy de confiance est utilisé.

Si un proxy de confiance est détecté, les en-têtes de requête sont inspectés en fonction de la configuration des en-têtes de confiance de Laravel. Des en-têtes spécifiques, tels que X-Forwarded-For et X-Client-IP, sont analysés pour extraire l'adresse IP du client.

Cependant, ces en-têtes peuvent ne pas être fiables, surtout si le client se trouve derrière plusieurs proxys. Par conséquent, l'adresse IP de la requête est ajoutée comme dernier élément du tableau $clientIps.

L'adresse IP du client est ensuite sélectionnée comme premier élément dans $clientIps. Cette adresse IP peut être l'adresse IP de la requête ou l'un des proxys de confiance.

Pour garantir l'exactitude, chaque adresse IP dans $clientIps est validée par rapport à une liste de proxys de confiance. Si une adresse IP appartient à un proxy de confiance, elle est supprimée du tableau.

En fin de compte, Request::ip() renvoie un tableau d'adresses IP. Le premier élément de ce tableau représente l'adresse IP du client non fiable, suivie des adresses IP de tous les proxys de confiance.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn