用代码实现wordpress评论留言,wordpress数字验证,过滤垃圾评论
点击数: 2089
文章目录
我这边提供两种方法。
也是比较简单的方法。
虽然有些人是透过修改外挂的方式,达到不靠外挂,也有亮丽的验证方式。
但常常无法适用于普遍主题。
而现在wordpress主题太多了,用通用的代码,比较可以简单实现功能。
这边我提供两种方式。
第一种方式「自动生成4位数字」
开启主题的function.php加入以下代码
- // ADD: Anti-spam Code
- //自动生成4位数字
- function olo_antispam(){
- if(!is_user_logged_in()){
- //$pcodes = substr(md5(mt_rand(0,99999)),0,4); //验证码为英文+数位组合
- $pcodes = substr(mt_rand(0,99999),0,4); //验证码为数位组合
- $str = '
class="olo_anti"XXXX/liXXXliXXXXXXXXXXXXXlabel for="subpcodes"XXXXXXXXXXXXXXXXXXXXspan class="number"XXX/spanXXXXXXXXXXXXXXXXXXXXXXXX/labelXXXX/liXXXli class="alt"XXXXXXXXXXXXXinput type="text" size="4" id="subpcodes" name="subpcodes" /XXXX/liXXXliXXXXXXXXXXXXXspan class="pcodes"XXXXXXXXXXXXX/spanXXXX/liXXXli class="alt"XXXXXXXXXXXXXinput type="hidden" value="'.$pcodes.'" name="pcodes" />';
- $str .= '';
- echo $str;
- }
- }
- add_action('comment_form', 'olo_antispam', 1, 1);
- function yanzhengma(){
- if ( !is_user_logged_in() ) {
- $pcodes = trim($_POST['pcodes']);
- $subpcodes = trim($_POST['subpcodes']);
- if((($pcodes)!=$subpcodes) || empty($subpcodes)){
- wp_die( __('错误!请输入正确的验证码') );
- }
- }
- }
- add_filter('pre_comment_on_post', 'yanzhengma');
第二种方法「数字加法验证法」
开启主题的function.php加入以下代码
- //数字加法验证法
- add_action('comment_form', 'spam_protection_math', 1, 1);
- function spam_protection_math(){
- //随便取得两个乱数, 范围0~9
- $num1=rand(0,9);
- $num2=rand(0,9);
- //从网页中的具体内容
- echo "
$num1 + $num2 = ?"
- .""
- .""
- ."";
- }
- function spam_protection_pre($commentdata){
- $sum=$_POST['sum'];//访客提交的计算结果
- switch($sum){
- //得到正确的计算结果则直接跳出
- case $_POST['num1']+$_POST['num2']:break;
- //未填写结果时的错误讯息
- case null:wp_die('错误: 没有输入验证码,请再验证码.');break;
- //计算错误时的错误讯息
- default:wp_die('错误: 验证码错误,请输入正确的验证码.');
- }
- return $commentdata;
- }
- if($comment_data['comment_type']==''){
- add_filter('pre_comment_on_post','spam_protection_pre');
- }