Maison  >  Article  >  développement back-end  >  Comment obtenir l'adresse IP réelle du visiteur lorsque des proxys sont utilisés ?

Comment obtenir l'adresse IP réelle du visiteur lorsque des proxys sont utilisés ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-04 13:39:01839parcourir

How to Get the Real Visitor IP Address When Proxies Are in Use?

Récupération de l'adresse IP réelle du visiteur malgré l'utilisation d'un proxy

Le code PHP couramment utilisé pour obtenir l'adresse IP d'un visiteur est :

<code class="php"><?php echo $_SERVER['REMOTE_ADDR']; ?></code>

Cependant, cette méthode ne parvient pas à capturer la véritable adresse IP lorsque des proxys sont en jeu. À la recherche d'une solution à ce problème, examinons une approche alternative.

Fonction PHP personnalisée pour la détermination IP

Le code PHP fourni offre une solution complète, prenant en compte les connexions CloudFlare et divers autres facteurs :

<code class="php">function getUserIP()
{
    // Handle CloudFlare connections
    if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
          $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
          $_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
    }
    $client  = @$_SERVER['HTTP_CLIENT_IP'];
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
    $remote  = $_SERVER['REMOTE_ADDR'];

    if(filter_var($client, FILTER_VALIDATE_IP))
    {
        $ip = $client;
    }
    elseif(filter_var($forward, FILTER_VALIDATE_IP))
    {
        $ip = $forward;
    }
    else
    {
        $ip = $remote;
    }

    return $ip;
}
$user_ip = getUserIP();</code>

Ce code attribue l'adresse IP à la variable $user_ip, qui peut ensuite être utilisée selon les besoins dans votre script PHP.

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