Avatar ·

如何在PHP中获取客户端IP地址:正确的解决方案

大家好!我是一名PHP初学者,在获取网站访问者的真实IP地址时遇到了问题。我需要记录IP以防范垃圾邮件和进行数据分析。 问题在于,我使用$_SERVER['REMOTE_ADDR'],但当网站位于Cloudflare或Nginx代理后面时,这种方法返回的是代理服务器的IP,而不是真实用户的IP。我尝试了不同的方法,但似乎都不可靠。 以下是我当前的代码: ```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 "您的IP: " . $ip; ``` 但我听说HTTP头可以被伪造,攻击者可能发送虚假的IP。如何正确且安全地获取客户端IP?是否需要考虑IP可能是IPv6?如果网站通过多个代理运行,该怎么办? 感谢您提供带有代码示例的详细解释。