美好的明天
分享改变,记录生活
美好的明天
当前位置: 首页 > WordPress > 正文

修复 使用 WP Open Social 插件后 IPv6 访客评论 IP地址获取不全

本文介绍当使用 WP Open Social 插件时无法获取完整的 IPv6 地址造成的评论归属地显示异常。

问题分析

在使用 WP Open Social 插件时发现,若访客是通过IPv6协议访问,在评论时会获取不到完整的IPv6地址,仅只显示前缀,例如:2408,导致评论处的归属地显示造成异常。

图片标题
图片标题

修改建议

我们需要修改open-social.php文件open_social_extend_proxy_ip函数,注释截断 IPv6 地址的正则表达式替换操作。

修改步骤

  1. 打开wp-open-social-5.0.2/open-social.php文件。
  2. 找到open_social_extend_proxy_ip函数(在875 行)。
  3. 将函数中的$user_ip = preg_replace('/[^0-9\.].*$/', '', $user_ip);这一行注释或删除。
  4. 保存文件并上传到服务器。

修改后的代码

function open_social_extend_proxy_ip(){
    $user_ip = sanitize_text_field($_SERVER['REMOTE_ADDR']);
    if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) $user_ip = sanitize_text_field($_SERVER['HTTP_X_FORWARDED_FOR']);
    if(!empty($_SERVER['X_FORWARDED_FOR'])) $user_ip = sanitize_text_field($_SERVER['X_FORWARDED_FOR']);
    // 注释截断 IPv6 地址的正则表达式替换操作
    // $user_ip = preg_replace('/[^0-9\.].*$/', '', $user_ip);
    return preg_replace('/[^0-9a-f:\., ]/si', '', $user_ip);
}

修改后的代码

验证修改

在完成上述修改后,发表一条评论,这时再检查数据库就可以看到评论者完整显示的 IP 地址。

完成修改,IPv6地址可以完整显示

温馨提示

本页面最后更新于:2025-04-15,距今已 60 天,若有链接失效或教程无效,欢迎留言反馈。

THE END

猜你喜欢

目前有 3 条评论

  1. 棕耳兔
    地板
    棕耳兔

    return preg_replace('/[^0-9a-f:\., ]/si', '', $user_ip);

    2025-04-21 22:36 来自:安徽
  2. 棕耳兔
    板凳
    棕耳兔

    return preg_replace('/[^0-9a-f:\., ]/si', '', $user_ip);

    2025-04-21 00:25 来自:安徽
  3. 棕耳兔
    沙发
    棕耳兔

    return preg_replace('/[^0-9a-f:\., ]/si', '', $user_ip);

    2025-04-21 00:18 来自:安徽

发表评论