北极寒流 » 网络资源 » WordPress 新用户注册增加验证码/算术验证/问题验证方法 - 2014.12.04

WordPress 新用户注册增加验证码/算术验证/问题验证方法

WordPress如果想开启新用户注册,但是又怕垃圾机器人恶意注册,通常可以采用增加验证码功能来防止恶意注册,或者注册时增加算术验证、问题验证等多种方式。

1、首先分享一下为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();
}

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

出自:http://www.utubon.com/post/1502.html

2、WordPress用户注册增加问题验证功能

将下面的代码添加到主题的 functions.php 即可:

add_action( 'register_form', 'add_security_question' );

function add_security_question() { ?>

<p>

<label><?php _e('请输入本站域名的中间部分:'v7v3') ?><br />

<input type="text" name="user_proof" id="user_proof" class="input" size="25" tabindex="20" /></label>

</p>

<?php }

add_action( 'register_post', 'add_security_question_validate', 10, 3 );

function add_security_question_validate( $sanitized_user_login, $user_email, $errors) {

// 如果没有回答

if (!isset($_POST[ 'user_proof' ]) || empty($_POST[ 'user_proof' ])) {

return $errors->add( 'proofempty', '<strong>错误</strong>: 您还没有回答问题。' );

// 如果答案不正确

} elseif ( strtolower( $_POST[ 'user_proof' ] ) != v7v3' ) {

return $errors->add( 'prooffail', '<strong>错误</strong>: 您的回答不正确。' );

}

}

另外还可以添加多个随机问题,代码如下:

function rand_reg_question(){

$register_number=rand(0,1); // 设置随机数的返回范围

$_SESSION['register_number']=$register_number;

}

add_action('login_head','rand_reg_question');

global $register_questions;

global $register_answers;

// 添加问题数组

$register_questions=array('中国的首都在哪里?','Google是哪个国家的公司?');

// 添加答案数组(与上面的问题对应)

$register_answers=array('北京','美国');

add_action( 'register_form', 'add_security_question' );

function add_security_question() {

global $register_questions;

$register_number=$_SESSION['register_number'];

?>

<p>

<label><?php echo $register_questions[$register_number];?><br />

<input type="text" name="user_proof" id="user_proof" class="input" size="25" tabindex="20" />

</label>

</p>

<?php }

add_action( 'register_post', 'add_security_question_validate', 10, 3 );

function add_security_question_validate( $sanitized_user_login, $user_email, $errors) {

global $register_answers;

$register_number=$_SESSION['register_number'];

if (!isset($_POST[ 'user_proof' ]) || empty($_POST[ 'user_proof' ])) {

return $errors->add( 'proofempty', '<strong>错误</strong>: 您还没有回答问题。' );

} elseif ( strtolower( $_POST[ 'user_proof' ] ) != $register_answers[$register_number] ) {

return $errors->add( 'prooffail', '<strong>错误</strong>: 您的回答不正确。' );

}

}

注:请编辑 14 和 16 行修改问题和答案,如果你修改了问题的数量,请记得修改第 6 行的 随机数返回范围 rand(0,1) ,比如 3 个问题,修改为 rand(0,2)。

资料来源:http://www.v7v3.com/wpjiaocheng/2014041107.html

3、WordPress用户注册增加验证功能

请直接浏览:WordPress自定义用户注册页面插件