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

Susan Sarandon
Libérer: 2024-10-20 08:32:31
original
726 Les gens l'ont consulté

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!