Discuz论坛使用CDN后无法获取用户真实IP的解决方法

private function _get_client_ip() {$ip = $_SERVER['REMOTE_ADDR'];if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {$ip = $_SERVER['HTTP_CLIENT_IP'];} elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {foreach ($matches[0] AS $xip) {if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip)) {$ip = $xip;break;}}}return $ip;}

将其修改为:

复制代码代码如下:

private function _get_client_ip() {$ip = $_SERVER['REMOTE_ADDR'];if (isset($_SERVER['HTTP_X_REAL_FORWARDED_FOR']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_REAL_FORWARDED_FOR'])) {$ip = $_SERVER['HTTP_X_REAL_FORWARDED_FOR'];}elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_FORWARDED_FOR'])) {$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];}elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {$ip = $_SERVER['HTTP_CLIENT_IP'];}return $ip;}

以上操作后,登陆CDN后台和你的Discuz论坛后台分别清除缓存即可。

靠山山会倒,靠人人会跑,只有自己最可靠。

Discuz论坛使用CDN后无法获取用户真实IP的解决方法

相关文章:

你感兴趣的文章:

标签云: