最近WordPress日记进行了一次改版,改版后使用了TML用户自定义登录注册插件,但是发现一个很严重的问题,那就是突然开始出现很多恶意注册用户,搞的是很烦人,所以就想着添加一个注册时的验证,到网上搜到很多,比如使用极验的方法,但是还要注册账号什么的,比较麻烦,不太想用。那就继续找,终于发现一个纯代码实现的方法。具体如下:
把下面这段代码添加到自己的functions.php,其中的验证问题我使用了本站的域名“www.wp-diary.com”,你也可以改成其他内容。注意改的时候,代码第四行和倒数第四行都有,要改两处哦
add_action( 'register_form', 'add_security_question' ); function add_security_question() { ?> <p> <label><?php _e('请输入本站域名:www.wp-diary.com') ?><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' ] ) != 'www.wp-diary.com' ) { return $errors->add( 'prooffail', '<strong>错误</strong>: 您的回答不正确。' ); } }
效果如下:
如果你觉得一个问题不过瘾,wordpress还可以实现注册随机验证:
session_start();
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(‘中国的首都在哪里?’,’Google是哪个国家的公司?’,’楚狂人博客是用什么
建站程序搭建的?’);
// 添加答案数组(与上面的问题对应)
$register_answers=array(‘北京’,’美国’,’wordpress’);
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>: 您的回答不正确。’ );
}
}
这个功能本站没有启用,就不给大家测试,需要使用wordpress随机注册验证的朋友可以自行测试一下,祝你成功!
WordPress日记主要承接WordPress主题定制开发、PSD转WordPress、WordPress仿站以及以WordPress为管理后端的小程序、APP,我们一直秉持“做一个项目,交一个朋友”的理念,希望您是我们下一个朋友。如果您有WordPress主题开发需求,可随时联系QQ:919985494
相关文章
wordpress安装插件提示:安装失败:发生了预料之外的错误。WordPress.org或是此服务器的配置可能出了一些问题
最近为了提升网站访问速度,所以更换了服务器,更换过以后,突然…免插件多方位屏蔽WordPress垃圾评论
网站用心做了一段时间,浏览量慢慢的上去了,随之而来的就是删不…如何修复“您的网站出现严重错误”错误?
您想知道如何解决“您的网站出现严重错误”错误吗?WordPr…修改WordPress上传文件大小限制
很多网友会遇到这样一个问题,就是WordPress网站上传图…WordPress主题开发中纯代码实现前端投稿功能
我们在WordPress主题过程中,很多时候会需要在前端做一…WordPress主题开发中如何实现文章相互关联
最近在帮客户定制开发一款WordPress虫草网站主题的时候…