给WordPress评论添加计算验证功能

鉴于 Akismet 治标但不治本,可通过修改代码,为评论表单加上简单的算术验证。

首先,编辑 WordPress 根目录下的 wp-comments-post.php 文件,找到以下代码(WordPress 2.8.5位于 70 行):

//算术验证开始
if ( !$user->ID ) {
  $aaa = trim($_POST[aaa]);
  $bbb = trim($_POST[bbb]);
  $subab = trim($_POST[subab]);
  if((($aaa+$bbb)!=$subab)|| empty($subab)){
    wp_die( __(请重新计算算式) );
  }
}
//算术验证结束
if ( '' == $comment_content ) //!!!在此语句之前,添加上面的代码!!!

然后,找到当前主题的评论模板,一般为 comments.php 文件。在填写用户/电邮之后、发表评论按钮之前,插入以下代码:

<p>
  <?php $aaa=rand(0,5); $bbb=rand(4,9); ?>
  <?php echo $aaa; ?>+<?php echo $bbb; ?> = <input type="text" name="subab" id="subab" size="2" tabindex="5" style="width:30px" /><?php if ($req) _e('(required)'); ?>
  <input name="aaa" value="<?php echo $aaa; ?>" type="hidden" />
  <input name="bbb" value="<?php echo $bbb; ?>" type="hidden" />
</p>

其中 rand() 函数用以产生随机数,可根据计算难度需要设定种子。 是显示限定为(必需)项,可根据应用主题不同作相应修改。

转载自:http://blog.nianqing.net/?p=349

THE END

评论 10

  1. 🏅

    :roll: :roll: 小蔷不错哦

  2. 🏅

    这个主要验证什么?怎么验证修复网站格式的正确性呢? 比如 如果网址填错了自动清空?

  3. 🏅

    留个脚印,不错,学习了.

    1. 🏆🏆🏅

      现在看到cn域名第一反应是:是不是垃圾站,第二反应是:怎么cn还能用! :oops:

  4. 🏆🏅🏅

    我一直使用插件Antispam Bee :mrgreen:

    1. 🏆🏆🏅

      我用willin大师的小强,没用插件

  5. 🏅

    来看看!打瓶酱油~

  6. 🏅

    这个挺好!不过我目前还用不着,呵呵

发表评论

幸会!