wp_nonce_field('cs_offline_msg', 'cs_nonce');
if (!wp_verify_nonce($_POST['cs_nonce'] ?? '', 'cs_offline_msg')) {
  wp_die('请求已过期', '', array('response' => 403));
}

下班后用户提交离线留言,页面直接 403,后台垃圾留言里也没有,服务器日志里只有一条 Akismet 返回的 blocked。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:留言表单没带校验令牌,也没有来源页,反垃圾服务按无来源提交直接判成垃圾。表单里那个蜜罐字段用了常见的 email 命名,浏览器自动填充把它填上了,等于自己承认是机器人。

「离线留言被反垃圾拦截」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

处理上按这个顺序:表单加防伪字段,提交时校验一次;蜜罐字段换个不常见的名字,并且用定位移出可视区而不是直接隐藏;先看反垃圾的命中原因,别急着把插件整个关掉。

确认没问题再收工,正常填完能提交成功,后台留言列表里能看到,机器人提交仍然被拦。

作者 9823189