Avatar ·

Como obter o IP do cliente em PHP: solução correta

Olá a todos! Sou um desenvolvedor PHP iniciante e me deparei com o problema de obter o endereço IP real do visitante do meu site. Preciso registrar o IP para proteção contra spam e análise. O problema é que estou usando $_SERVER['REMOTE_ADDR'], mas quando o site está atrás do Cloudflare ou de um proxy Nginx, esse método retorna o IP do servidor proxy, não o do usuário real. Tentei várias opções, mas todas parecem não confiáveis. Aqui está meu código atual: ```php $ip = $_SERVER['REMOTE_ADDR']; if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } echo "Seu IP: " . $ip; ``` Mas ouvi dizer que os cabeçalhos HTTP podem ser falsificados e um invasor pode enviar um IP falso. Como obter o IP do cliente de forma correta e segura? É necessário considerar que o IP pode ser IPv6? E como lidar se o site funciona através de vários proxies? Agradeço por uma explicação detalhada com exemplos de código.