Maison >développement back-end >tutoriel php >Comment obtenir la véritable adresse IP du visiteur derrière les proxys ?

Comment obtenir la véritable adresse IP du visiteur derrière les proxys ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-06 17:54:02342parcourir

How to Get the Real Visitor IP Address Behind Proxies?

Obtenir les adresses IP de vrais visiteurs derrière les proxys

Dans les cas où les visiteurs utilisent des proxys, la méthode PHP standard $_SERVER['REMOTE_ADDR'] peut ne pas fournir l’adresse IP réelle du visiteur. Pour résoudre ce problème, envisagez d'utiliser le code PHP suivant :

<code class="php">function getUserIP()
{
    // Handle CloudFlare network
    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();

echo $user_ip; // Output real visitor IP address</code>

Ce code vérifie les réseaux CloudFlare et ajuste l'adresse IP en conséquence. Il examine ensuite HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR et REMOTE_ADDR dans cet ordre, en donnant la priorité aux adresses IP avec des formats valides. En implémentant ce code, vous pouvez obtenir la véritable adresse IP du visiteur, même lorsqu'il se trouve derrière un proxy.

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