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.
No answers yet.
Faça login para deixar uma resposta
Blogs
Trabalhando com datas e horas em Go: guia completo