我正在尝试跟踪和记录使用PHP $_SERVER['REMOTE_ADDR']来访问我的网站的用户/访问者。PHP中IP地址跟踪的一种典型方法。
$_SERVER['REMOTE_ADDR']
但是,我正在使用CloudFlare进行缓存等,并以CloudFlare的方式接收其IP地址:
108.162.212。-108.162.239。
在仍然使用CloudFlare的同时检索实际用户/访问者IP地址的正确方法是什么?
云耀斑可用的其他服务器变量是:
$_SERVER["HTTP_CF_CONNECTING_IP"] 真正的访客IP地址,这就是您想要的
$_SERVER["HTTP_CF_CONNECTING_IP"]
$_SERVER["HTTP_CF_IPCOUNTRY"] 访客所在国家
$_SERVER["HTTP_CF_IPCOUNTRY"]
$_SERVER["HTTP_CF_RAY"]
$_SERVER["HTTP_CF_VISITOR"] 这可以帮助您知道它的http还是https
$_SERVER["HTTP_CF_VISITOR"]
您可以像这样使用它:
if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) { $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"]; }
如果这样做,并且访问IP地址的有效性很重要,则可能需要验证$_SERVER["REMOTE_ADDR"]包含一个实际有效的cloudflare IP地址,因为任何人都可以伪造标头,只要他能够直接连接到服务器IP。
$_SERVER["REMOTE_ADDR"]