加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > CMS系统 > wordpress > 正文

WordPress新用户注册添加验证问题

发布时间:2020-12-14 14:29:21 所属栏目:wordpress 来源:网络整理
导读:由站长 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。 昨天发现了一件很蛋疼的事情呀,比如你在百度搜索 wordpress 新用户注册添加验证问题,出来的前三个代码都是有问题的,还有一个的代码居然只有前面几句

以下代码由PHP站长网 52php.cn收集自互联网现在PHP站长网小编把它分享给大家,仅供参考

昨天发现了一件很蛋疼的事情呀,比如你在百度搜索 wordpress 新用户注册添加验证问题,出来的前三个代码都是有问题的,还有一个的代码居然只有前面几句,本文要修正的功能是当站点启用注册后,给注册表单添加一个验证问答,避免一些垃圾用户,也可以利用这个来实现邀请注册功能,好处是不用安装什么邀请码插件,只需设置成统一的验证答案,然后把你设置的答案发给那些注册的人就行了。


代码如下:

add_action( 'register_form','add_security_question' );

function add_security_question() { ?>

<p>

<label><?php _e('请输入本站域名的中间部分:22vd') ?><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' ] ) != 'dedewp' ) {

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

}

}

加入到主题的 functions.php 文件就可以正常使用了。


如果你需要随机多个问题,那么需要用到如下代码:

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

}

}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读