谷子猫博客

一个简单爱分享的小站!^_^!
首页>> 网文转载 >>WordPress使用CDN后获取用户真实IP地址/使用CDN后WP无法获取访问IP

WordPress使用CDN后获取用户真实IP地址/使用CDN后WP无法获取访问IP

WP是一款使用很广的网站/博客程序,使用的人很多。如果使用CDN对于静态文件加速,能提高访问体验。但是有时候套用CDN后会出现一个问题,就是后台查询访问者IP的时候,会变成CDN的节点IP。

默认的直接将Wordpress网站添加CDN加速工具之后,没有做过任何设置,这样即便是网友留言评论的时候,我们在Wordpress后台看到这个用户IP地址来源也都是来自CDN加速节点的。如下图:


20190627143917373.png


虽然对于实际的用户体验使用问题不大,但是对于用户数据分析还是有点影响的。而且雷同的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,添加如下代码:

代码1:


// WordPress 使用 CDN 后获取访客真实 IP


if(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]);
}



只需要将以下代码添加到“wp-config.php”文件中,这样用户留言评论的时候获取的IP地址就是真实的了,再也不会是CDN节点上的IP了。

这段代码可以在 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() 函数即可。
以上为我在网上找到的方法,希望有用。




×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

打赏作者
版权所有,转载注意明处:谷子博客 » WordPress使用CDN后获取用户真实IP地址/使用CDN后WP无法获取访问IP
标签: 博客 分享 技术 经验 程序 cdn 线路

发表评论

路人甲

网友评论(0)