Maison > développement back-end > tutoriel php > Comment puis-je déterminer avec précision l'adresse IP d'un client en PHP ?

Comment puis-je déterminer avec précision l'adresse IP d'un client en PHP ?

Patricia Arquette
Libérer: 2024-12-17 05:33:25
original
680 Les gens l'ont consulté

How Can I Accurately Determine a Client's IP Address in PHP?

Détermination de l'adresse IP du client en PHP

Le tableau superglobal PHP $_SERVER donne accès à diverses informations relatives au serveur, y compris l'adresse distante du client Adresse IP via $_SERVER['REMOTE_ADDR']. Cependant, cette approche peut échouer dans des scénarios spécifiques.

Dans les cas où la valeur $_SERVER['REMOTE_ADDR'] est incorrecte, d'autres variables de serveur peuvent être utilisées pour acquérir l'adresse IP avec précision. Les éléments suivants explorent deux approches :

Utilisation de la fonction getenv() :

La fonction getenv() récupère la valeur d'une variable d'environnement. Il peut être utilisé pour obtenir l'adresse IP du client comme suit :

function get_client_ip() {
    $ipaddress = '';
    if (getenv('HTTP_CLIENT_IP'))
        $ipaddress = getenv('HTTP_CLIENT_IP');
    else if(getenv('HTTP_X_FORWARDED_FOR'))
        $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
    else if(getenv('HTTP_X_FORWARDED'))
        $ipaddress = getenv('HTTP_X_FORWARDED');
    else if(getenv('HTTP_FORWARDED_FOR'))
        $ipaddress = getenv('HTTP_FORWARDED_FOR');
    else if(getenv('HTTP_FORWARDED'))
       $ipaddress = getenv('HTTP_FORWARDED');
    else if(getenv('REMOTE_ADDR'))
        $ipaddress = getenv('REMOTE_ADDR');
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}
Copier après la connexion

Utilisation du tableau superglobal $_SERVER :

Le tableau $_SERVER contient des informations de requête HTTP. Le code suivant démontre son utilisation pour obtenir l'adresse IP :

function get_client_ip() {
    $ipaddress = '';
    if (isset($_SERVER['HTTP_CLIENT_IP']))
        $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
    else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_X_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_FORWARDED'];
    else if(isset($_SERVER['REMOTE_ADDR']))
        $ipaddress = $_SERVER['REMOTE_ADDR'];
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}
Copier après la connexion

Les deux approches offrent des fonctionnalités équivalentes mais diffèrent dans la manière dont elles accèdent aux informations.

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