Identification de la véritable adresse IP derrière les serveurs proxy
Récupération de l'adresse IP d'un visiteur à l'aide de méthodes PHP standard telles que $_SERVER['REMOTE_ADDR'] peut ne pas fournir d'informations précises si le visiteur accède à votre site Web via un serveur proxy.
Pour résoudre ce problème, envisagez d'utiliser le code PHP suivant :
<code class="php">function getUserIP() { // Obtain the IP address of the visitor behind CloudFlare 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']; $ip = null; 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 IP address [Ex: 177.87.193.134]</code>
Cette fonction vérifie d'abord si le le visiteur utilise CloudFlare, un service proxy populaire. Si tel est le cas, il récupère la véritable adresse IP à l'aide de l'en-tête HTTP_CF_CONNECTING_IP.
Ensuite, il considère trois sources IP potentielles : HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR et REMOTE_ADDR. Il valide chaque adresse IP et sélectionne la plus fiable.
En adoptant cette approche, vous pouvez obtenir efficacement l'adresse IP réelle de vos visiteurs, même lorsqu'ils se trouvent derrière des serveurs 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!