Maison >développement back-end >tutoriel php >Comment obtenir de manière fiable l'adresse IP d'un client en PHP ?

Comment obtenir de manière fiable l'adresse IP d'un client en PHP ?

DDD
DDDoriginal
2024-12-18 07:19:11345parcourir

How to Reliably Get a Client's IP Address in PHP?

Obtention de l'adresse IP du client en PHP

Avant d'explorer les méthodes pour obtenir l'adresse IP du client, il est crucial de comprendre pourquoi utiliser uniquement $_SERVER[ 'REMOTE_ADDR'] peut conduire à des résultats incorrects. Les proxys, pare-feu ou autres intermédiaires peuvent modifier l'adresse IP d'origine.

Pour résoudre ce problème, voici des approches alternatives :

Utiliser GETENV()

La fonction getenv() nous permet d'accéder aux variables d'environnement. La fonction suivante l'utilise :

// Function to get client IP address
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');
    //... (Other conditions omitted for brevity)
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}

Utilisation de $_SERVER

PHP fournit également le superglobal $_SERVER pour accéder aux variables du serveur. Voici une implémentation similaire qui l'utilise :

// Function to get client IP address
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'];
    //... (Other conditions omitted for brevity)
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}

Ces deux fonctions prennent en compte plusieurs variables de serveur pour obtenir l'adresse IP la plus précise disponible. Ils donnent la priorité aux variables telles que HTTP_CLIENT_IP et HTTP_X_FORWARDED_FOR, qui offrent une plus grande fiabilité.

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