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!