乌徒帮技术范WordPressWordPress开发 › WordPress用户注册验证码

WordPress用户注册验证码

分类:WordPress开发 标签:

前段时间乌徒帮关闭了用户注册,因为发现会有很多莫名其妙的用户注册进来,估计是被机器人骚扰了。于是我想给用户注册的时候添加一个验证码机制不久可以了吗?于是搜了一下,露兜提供的WordPress自定义用户注册页面插件非常棒,不仅实现了注册验证码功能,而且还能在注册时自己填写密码。但对于我来说,这个相对复杂了,我只需要一个验证码功能即可,而且我的主机不支持生成图片,而且,如果连邮箱都不愿意打开,这样的用户注册进来怎么会令我放心呢?我就又想到了之前写的WordPress评论算术题验证码插件,于是想在注册的时候也让注册的朋友来算一下加法题。于是写了这个插件:

/*
 Plugin Name: WordPress用户注册验证码插件
 Plugin URI:  http://www.utubon.com/wordpress-plugin-register-capatcha/
 Description: 注册之前必须写出简单的算术题答案
 Version: 1.0
 Author: 否子戈
 Author URI: http://www.utubon.com
*/

if(!class_exists('register_capatcha')) {
??? class register_capatcha {
??????? function __construct() {
??????????? add_action('register_form', array(& $this, 'print_capatcha'));
??????????? add_filter('register_post', array(& $this, 'preprocess_register'));
??????? }
??????? function print_capatcha() {
??????????? session_start();
??????????? $rand_1 = mt_rand(1,20);
??????????? $rand_2 = mt_rand(1,20);
??????????? $_SESSION['capatcha_register'] = $rand_1 + $rand_2;

??????????? $str? = '<div id="capatcha-area"><label>';
??????????? $str .= "请计算:{$rand_1} + {$rand_2} = ".'<input type="text" name="capatcha" id="capatcha" />';
??????????? $str .= '</label></div>';

??????????? echo $str;
??????? }
??????? function preprocess_register($registerdata) {[ad src="google" width="300" height="250" float="right"]
??????????? session_start();
??????????? $capatcha = $_SESSION['capatcha_register'];
??????????? if($capatcha != $_POST['capatcha']){
??????????????????? wp_die( __('警告:您提供的验证码不对,请返回重新计算。') );
??????????? }
??????????? unset($_SESSION['capatcha_register']);
??????????? return $registerdata;
??????? }
??? }

}

if( !isset($register_capatcha) ) {
?? ?$register_capatcha =& new register_capatcha();
}

思路也非常简单在注册页面添加一个新的input用来填写计算结果,在提交注册信息的时候,判断计算结果是否正确。效果如图:

在注册表单后面添加一个算术验证码

将上面的代码保存到一个空白的php文档中,上传到wordpress的插件目录,到后台启动该插件即可使用了。

填写个人信息,赶快回复吧!