一尘不染

CloudFlare并通过PHP记录访问者IP地址

php

我正在尝试跟踪和记录使用PHP $_SERVER['REMOTE_ADDR']来访问我的网站的用户/访问者。PHP中IP地址跟踪的一种典型方法。

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

108.162.212。-108.162.239。

在仍然使用CloudFlare的同时检索实际用户/访问者IP地址的正确方法是什么?


阅读 404

收藏
2020-05-29

共1个答案

一尘不染

云耀斑可用的其他服务器变量是:

$_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。

2020-05-29