2种适合WordPress注册验证码插件/非插件实现方法

使用wordpress的站长,在有用户注册账户的时候,我们可以实现多种验证过滤模式,比如我们常见的有滑动移动滚动条模式、选择物件种类模式、拖动拼图模式,以及完成验证问题的模式。在这篇文章中,大鸟先分享一个使用插件,一种不适用插件自定义问题回答模式。

第一、SI CAPTCHA Anti-Spam插件

SI CAPTCHA Anti-Spam插件功能还是蛮强大的,支持文章评论、注册验证多种模式。安装之后,我们需要设置才可以生效。

看到了不?支持的地方很多吧,包括登录的时候都可以激活验证模式。

第二、自定义验证问题验证方式

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>: 您的回答不正确。' );
}
}

这个方法来自WP大学(https://www.wpdaxue.com/add-a-security-question-to-the-register-screen.html),默认是只有2个问题,我们可以根据数组模式,添加或者修改多个问题。

这里我们可以看到在刷新注册页面可以看到问题的随机出现,我们可以自行设置多个问题随机。

广告栏+++++++蜜糖商店|大哥云| 搬瓦工JMS|红莓网络| Mielink|萌喵加速| 飞鸟云

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注