Avatar ·

Cómo obtener la dirección IP del cliente en PHP: la solución correcta

¡Hola a todos! Soy un desarrollador PHP principiante y me encontré con el problema de obtener la dirección IP real del visitante de mi sitio. Necesito registrar la IP para protección contra spam y análisis. El problema es que uso $_SERVER['REMOTE_ADDR'], pero cuando el sitio está detrás de Cloudflare o un proxy Nginx, este método devuelve la IP del servidor proxy, no la del usuario real. Probé diferentes opciones, pero todas parecen poco confiables. Aquí está mi código actual: ```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 "Tu IP: " . $ip; ``` Pero he oído que los encabezados HTTP se pueden falsificar y un atacante puede enviar una IP falsa. ¿Cómo obtener la IP del cliente de manera correcta y segura? ¿Es necesario considerar que la IP puede ser IPv6? ¿Y qué pasa si el sitio funciona a través de varios proxies? Agradecería una explicación detallada con ejemplos de código.