WordPress使用CDN后获取用户真实IP地址/使用CDN后WP无法获取访问IP
WP是一款使用很广的网站/博客程序,使用的人很多。如果使用CDN对于静态文件加速,能提高访问体验。但是有时候套用CDN后会出现一个问题,就是后台查询访问者IP的时候,会变成CDN的节点IP。
默认的直接将Wordpress网站添加CDN加速工具之后,没有做过任何设置,这样即便是网友留言评论的时候,我们在Wordpress后台看到这个用户IP地址来源也都是来自CDN加速节点的。如下图:
虽然对于实际的用户体验使用问题不大,但是对于用户数据分析还是有点影响的。而且雷同的IP会影响网站的可信度,也不符合现在国内对评论监管的要求。因此:我们将需要获得真实的用户评论IP地址。
WordPress使用CDN后获取用户真实IP地址教程WordPress 往数据库存 IP 的时候似乎用的是 REMOTE_ADDR,这样一来数据库里面的评论信息就全是从各个 CDN 服务器来的 IP。
wp-config.php 文件中增加下面代码就可以获取 CDN 后访客的真实 IP。这个函数的核心是用解析后的 HTTP_X_FORWARDED_FOR 替换 REMOTE_ADDR。
这里我们可以通过直接修改配置文件“wp-config.php”,然后使得前端正常使用CDN不受影响,但是用户访问网站所留下来的记录IP地址的时候还是用户真实的IP,添加如下代码:
// WordPress 使用 CDN 后获取访客真实 IPif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $list[0];
}
代码2:
// WordPress 使用 CDN 后获取访客真实 IP
if( !empty($_SERVER['HTTP_X_FORWARDED_FOR']) ) {
$get_HTTP_X_FORWARDED_FOR = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = trim($get_HTTP_X_FORWARDED_FOR[0]);
}
这段代码可以在 PHP 中用来获取客户真实 IP 地址,即使在使用 CDN 的情况下也可以使用。它检查 HTTP_X_FORWARDED_FOR 标头,如果存在,则将其值分解成一个逗号分隔的列表,并将第一个 IP 地址作为客户端的真实 IP 地址。请注意,这种方法并不总是准确的,因为客户端可以伪造此标头,但通常情况下它是可靠的。
或者您还可以使用以下 PHP 代码来在 WordPress 中获取访客真实 IP 地址:
function get_real_ip_address() {
if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
$_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
}
return $_SERVER['REMOTE_ADDR'];
}
将这段代码添加到您的 WordPress 主题的 functions.php 文件中,然后在需要获取访客真实 IP 地址的地方调用 get_real_ip_address() 函数即可。
以上为我在网上找到的方法,希望有用。
发表评论