从建站以来,多多少少收到了一些垃圾评论,虽然不是很多,但也比较心烦,为了避免类似事情再发生,决定加入评论验证码,来杜绝一些 机器人。既然只是为了杜绝一些机器人,而又不过分强求访客输入繁琐的验证码,所以这次设置的验证码也比较简单,只有四位随机数字,详细步骤如下。

===================================================================

这次验证码使用了 sidxspam 插件,后面有时间的话,会再发一个免插件的配置方法,有需要的,可以留意下。
WordPress中添加以jQuery为基础的评论验证码(非插件)

1、安装 sidxspam 插件,并在后台开启;
2、然后会在/wp-content/plugins/sidxspam 目录下出现三个文件,修改 sidxspam.php 文件,来达到个性化设置,例如,我做了一些简单的翻译操作,将提示信息全改成了中文的,并将出错时的提示文字做了些细微的调整,虽然比较简单,但功能已经能实现了,大家也可以按照自己的心意,来打造符合自己BLOG风格的错误提示页面。好了,下面是我的sidxspam.php 文件:(点下面的 show source,展开代码)
[css collapse=”true”]
<?php
/*
Plugin Name: SidXSpam
Version: 3.1.0
Plugin URI: http://photozero.net/sidxspam/
Author: Neekey
Author URI: http://photozero.net
Description: Anti-spam by verify code that displayed in the image under the comment form.
*/

@session_start();
add_action(‘comment_form’,’show_sxs’);
add_filter(‘preprocess_comment’,’check_sxs’);

if (!defined(‘WP_CONTENT_DIR’)) {
define( ‘WP_CONTENT_DIR’, ABSPATH.’wp-content’);
}
if (!defined(‘WP_CONTENT_URL’)) {
define(‘WP_CONTENT_URL’, get_option(‘siteurl’).’/wp-content’);
}
if (!defined(‘WP_PLUGIN_DIR’)) {
define(‘WP_PLUGIN_DIR’, WP_CONTENT_DIR.’/plugins’);
}
if (!defined(‘WP_PLUGIN_URL’)) {
define(‘WP_PLUGIN_URL’, WP_CONTENT_URL.’/plugins’);
}

function make_seed() {
list($usec, $sec) = explode(‘ ‘, microtime());
return (float)$sec + ((float)$usec * 100000);
}

function sxs_create_sid(){
mt_srand(make_seed());
$sxscode = ”;$sxs_sid_code = ”;
$sxsarray = array(‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’,’j’,’k’,’m’,’n’,’p’,’q’,’r’,’s’,’t’,’u’,’v’,’w’,’x’,’y’,’z’);
$sxs_sid_array = array(‘1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9′,’0’);
shuffle($sxsarray);
shuffle($sxs_sid_array);
for( ;strlen($sxscode)<=11; ){
$sxscode .= $sxsarray[mt_rand(0, count($sxsarray))];
}
for( ;strlen($sxs_sid_code)<=3; ){
$sxs_sid_code .= $sxs_sid_array[mt_rand(0, count($sxs_sid_array))];
}
$_SESSION[‘_sxs_’.$sxscode] = $sxs_sid_code;
return array($sxscode,$sxs_sid_code);
}

function show_sxs(){
$sxscode = sxs_create_sid();
$sxs_url = WP_PLUGIN_URL.’/sidxspam’;

echo ‘<br />
<h2><abbr title="只是验证下您是访客还是机器人">请输入验证码:</abbr>&nbsp;&nbsp;
<img alt="如果看不清图片上的数字,请刷新本页!" src="’.$sxs_url.’/image.php?sid=’.$sxscode[0].’" />
<input type="hidden" name="sxssid" value="_sxs_’.$sxscode[0].’" />
<input type="text" name="sxscode" maxlength="4" style="width:60px" title="请输入您看到的数字" />’;
}

function check_sxs($commentdata){

if ($_SESSION[$_POST[‘sxssid’]] !== $_POST[‘sxscode’]) {
//
die(__(‘
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Error</title></head>
<body style="background-color:d5d5d5">
<div style="background-color:ffffff;width:400px;height:350px;padding:2%;margin-top:15%;margin-left:36%">
<h1 style="color:red">错误:</h1>非常抱歉,您输入的验证码有误,请核对后重新输入。<br /><br />
您可以将下面评论进行复制,以免返回页面时,以前所写的评论信息消失。<br /><br />
由此给您带来的不便,请您理解。<br /><br />
<form name="form">
Your comment:<br />
<textarea rows="5" cols="40" name="copy">’.$commentdata[‘comment_content’].'</textarea><br /><br />
<a href="javascript:history.back(-1);">返回页面</a>
</form>
</body></html>’
));
}
//unset($_SESSION[$_POST[‘sxssid’]]);
return $commentdata;

}
?>
[/css]

3、验证码的位置
大家可以在 主题目录 下的 comments.php 文件中,找到如下这行代码
[php]
<?php do_action(‘comment_form’, $post->ID); ?>
[/php]
将它放到自己认为合适的地方即可,本人就将这段代码,放到了“订阅评论”的上面,并将“订阅评论”的那行代码删掉了。

.