前段时间在开发WordPress主题用户中心功能的时候,发现WordPress本身的注册机制存在缺陷会被机器人恶意注册,导致数据库出现大量垃圾用户账号,故而在其基础上进行改进,特意增加了一个本站名称验证功能以用于识别是否是人类注册,于是记录下来。
改进后开放会员注册在整体用户体验度上还是很友好的,那么该如何将机器人恶意注册拒于千里之外呢?
这个功能还是很方便实用的,只是在注册表单增加一行验证问题即可轻易解决。
将下方代码添加进function即可实现:
//WordPress 注册表单添加验证问题
add_action( 'register_form', 'add_security_question' );
function add_security_question() { ?>
<p>
<label><?php _e('本站名称') ?><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' ] ) != '此处文字更换为你的站点名称' ) {
return $errors->add( 'prooffail', '<strong>错误</strong>: 您的回答不正确。' );
}
}
未经允许不得转载:WordPress组织 » WordPress 注册表单添加验证问题,有效拦截机器人恶意注册
评论前必须登录!