快速给WordPress增加注册验证码

由于博客开放了用户注册,一直以来都有很多的虚假注册信息来注册,估计是什么注册机之类的,当时就想到了在注册页面增加一个验证码,防止虚假注册。

最终效果图:

配置教程:

1.首先找到wordpress当前主题目录,一般在wp-content\themes下面。

2.打开functions.php进行编辑

3.复制下面代码到functions.php中

//新增注册验证(开始)
function rand_reg_question() {
	$register_number=rand(0,2);
	$_SESSION['register_number']=$register_number;
}
add_action('login_head','rand_reg_question');
global $register_questions;
global $register_answers;
$register_questions=array('腾讯公司是哪个国家的?','谷歌公司是哪个国家的?','华为公司是哪个国家的?');
$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>:您的回答不正确。' );
	}
}
//新增注册验证(结束)

4.打开注册页面,就能看到注册页面已经多了一栏验证码输入栏了。

THE END