美好的明天

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

本文介绍当使用 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 01:02:08,距今已 3 天,若有链接失效或教程无效,欢迎留言反馈。
THE END

发表评论