CloudFlare并通过PHP登录访客IP地址?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (74)

我试图跟踪和登录使用PHP访问我的网站的用户/访问者$_SERVER['REMOTE_ADDR']。在PHP中用于IP地址跟踪的典型方法。

但是,我正在使用CloudFlare进行缓存等,并接收CloudFlare的IP地址:

108.162.212.* - 108.162.239.*

在仍使用CloudFlare的情况下,检索实际用户/访问者IP地址的正确方法是什么?

提问于
用户回答回答于

可用的额外服务器变量有:

$_SERVER["HTTP_CF_CONNECTING_IP"] 真正的访客IP地址

$_SERVER["HTTP_CF_IPCOUNTRY"]

$_SERVER["HTTP_CF_RAY"]

$_SERVER["HTTP_CF_VISITOR"] 这可以帮助你知道它的http或https

你可以像这样使用它:

if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
  $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
}

如果这样做,并且访问IP地址的有效性很重要,则可能需要验证是否$_SERVER["REMOTE_ADDR"]包含实际有效的Cloudflare IP地址,因为如果他能够直接连接到服务器IP,任何人都可以伪造标头。

用户回答回答于

扫码关注云+社区

领取腾讯云代金券