Maison > développement back-end > tutoriel php > Comment puis-je récupérer le plus précisément possible l'adresse IP d'un utilisateur en PHP ?

Comment puis-je récupérer le plus précisément possible l'adresse IP d'un utilisateur en PHP ?

Susan Sarandon
Libérer: 2024-12-19 11:48:18
original
248 Les gens l'ont consulté

How Can I Most Accurately Retrieve a User's IP Address in PHP?

Quel est le moyen le plus précis de récupérer l'adresse IP correcte d'un utilisateur en PHP ?

Quand il s'agit de récupérer l'adresse IP d'un utilisateur en PHP, il existe de nombreuses options à choisir. Cependant, la méthode la plus précise dépend d'un certain nombre de facteurs.

Un facteur à considérer est de savoir si l'utilisateur se trouve derrière un proxy. Si l'utilisateur se trouve derrière un proxy, son adresse IP peut être masquée ou masquée. Dans ce cas, vous devrez utiliser une méthode capable de percer le proxy pour obtenir la véritable adresse IP de l'utilisateur.

Un autre facteur à considérer est de savoir si vous souhaitez utiliser une approche de liste blanche ou de liste noire. Une approche de liste blanche signifie que vous autorisez uniquement le trafic provenant de certaines adresses IP. Une approche de liste noire signifie que vous bloquez le trafic provenant de certaines adresses IP. La méthode que vous choisirez dépendra de vos besoins spécifiques et de vos exigences de sécurité.

Le code suivant est un consensus général sur la façon de récupérer le plus précisément possible l'adresse IP réelle d'un utilisateur à l'aide des variables $_SERVER :

function get_ip_address(){
    foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key){
        if (array_key_exists($key, $_SERVER) === true){
            foreach (explode(',', $_SERVER[$key]) as $ip){
                $ip = trim($ip); // just to be safe

                if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false){
                    return $ip;
                }
            }
        }
    }
}
Copier après la connexion

Ce code vérifie un certain nombre de variables $_SERVER et essaie de renvoyer la première adresse IP valide. Ce code fournit une estimation plus précise de l'adresse IP réelle d'un utilisateur, mais il n'est toujours pas parfait.

Mots d'avertissement :

Gardez à l'esprit que $_SERVER[ 'REMOTE_ADDR'] représente toujours la source d'adresse IP la plus fiable, malgré son potentiel d'inexactitudes. Le but du code ci-dessus est de tenter de déterminer l'adresse IP d'un client assis derrière un proxy. À des fins générales, il est conseillé de combiner cette méthode avec l'adresse IP renvoyée directement par $_SERVER['REMOTE_ADDR'] et de stocker les deux.

Pour l'écrasante majorité des utilisateurs, le code ci-dessus fournira des résultats précis. Cependant, il n'est peut-être pas infaillible contre les utilisateurs malveillants qui pourraient tenter d'abuser de votre système en injectant leurs propres en-têtes de requête. Pour les applications critiques reposant sur des adresses IP, respectez $_SERVER['REMOTE_ADDR'] et évitez de vous adresser aux utilisateurs derrière des proxys.

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.cn
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