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

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

代码如下:

  1. add_action( 'register_form', 'add_security_question' );
  2. function add_security_question() { ?>
  3.     <p>
  4.     <label><?php _e('请输入本站域名的中间部分:22vd') ?><br />
  5.         <input type="text" name="user_proof" id="user_proof" class="input" size="25" tabindex="20" /></label>
  6.     </p>
  7. <?php }
  8. 
    
  9. add_action( 'register_post', 'add_security_question_validate', 10, 3 );
  10. function add_security_question_validate( $sanitized_user_login, $user_email, $errors) {
  11.     // 如果没有回答
  12.     if (!isset($_POST[ 'user_proof' ]) || empty($_POST[ 'user_proof' ])) {
  13.         return $errors->add( 'proofempty', '<strong>错误</strong>: 您还没有回答问题。'  );
  14.     // 如果答案不正确
  15.     } elseif ( strtolower( $_POST[ 'user_proof' ] ) != 'dedewp' ) {
  16.         return $errors->add( 'prooffail', '<strong>错误</strong>: 您的回答不正确。'  );
  17.     }
  18. }

加入到主题的 functions.php 文件就可以正常使用了。
如果你需要随机多个问题,那么需要用到如下代码:

  1. session_start();
  2. function rand_reg_question(){
  3.     $register_number=rand(0,2); // 设置随机数的返回范围
  4.     $_SESSION['register_number']=$register_number;
  5. }
  6. add_action('login_head','rand_reg_question');
  7. 
    
  8. global $register_questions;
  9. global $register_answers;
  10. // 添加问题数组
  11. $register_questions=array('中国的首都在哪里?','Google是哪个国家的公司?','创客云是用什么建站程序搭建的?');
  12. // 添加答案数组(与上面的问题对应)
  13. $register_answers=array('北京','美国','wordpress');
  14. 
    
  15. add_action( 'register_form', 'add_security_question' );
  16. function add_security_question() {
  17.     global $register_questions;
  18.     $register_number=$_SESSION['register_number'];
  19.     ?>
  20.     <p>
  21.         <label><?php echo $register_questions[$register_number];?><br />
  22.             <input type="text" name="user_proof" id="user_proof" class="input" size="25" tabindex="20" />
  23.         </label>
  24.     </p>
  25. <?php }
  26. 
    
  27. add_action( 'register_post', 'add_security_question_validate', 10, 3 );
  28. function add_security_question_validate( $sanitized_user_login, $user_email, $errors) {
  29.     global $register_answers;
  30.     $register_number=$_SESSION['register_number'];
  31.     if (!isset($_POST[ 'user_proof' ]) || empty($_POST[ 'user_proof' ])) {
  32.         return $errors->add( 'proofempty', '<strong>错误</strong>: 您还没有回答问题。' );
  33.     } elseif ( strtolower( $_POST[ 'user_proof' ] ) != $register_answers[$register_number] ) {
  34.         return $errors->add( 'prooffail', '<strong>错误</strong>: 您的回答不正确。' );
  35.     }
  36. }

原创文章,作者:DavidWu,如若转载,请注明出处:https://www.davidwu.net/archives/102140

WordPress安全防护插件
服务项目 服务内容 收费标准(元)
开发定制 WordPress主题/插件开发定制 (以最终需求为准)
主题/插件汉化 汉化团队WordPress主题/插件,翻译率95% (以标的主题/插件的句子数量为准)
服务器环境配置 基于您现有服务器,搭建配置网站运行环境,结合我们多年来实战经验,可完美支持WordPress等PHP程序运行,并配置伪静态规则、优化目录权限等问题。服务器我们强烈推荐使用Linux系统。 100元/次
网站托管 若贵站目前尚无技术人员,无法完成服务器环境配置,可选择我们的网站托管服务,直接交付正常运行的WordPress站点,并且无需担心服务器的后续维护工作,一切都由我们来帮您完成。 标配套餐:1000元/年/站点 高配套餐:联系客服获取
网站加速优化 从服务器后端配置优化到WordPress数据库缓存、前端页面缓存、JS和CSS压缩合并,全方位优化网站加载速度,实现秒开。(此服务仅针对(云)服务器/VPS) 500元/次(仅站内优化200元/次)
主题配置 本站所有主题均支持,可快速实现,若有任何问题可以咨询客服解决,若您希望我们提供配置服务,可选购此服务。 英文主题安装 60元/次 汉化主题安装 30元/次
HTTPS配置 HTTPS已经不断普及,并且有着更高的安全性以及SEO上的优待。该服务收取的为服务费,SSL证书产生的费用请自行承担。 100元/次
网站搬家 迁移网站所有文件和数据库信息、网站相关配置的调整、以及迁移中的疑难问题故障排除。 标准收费:500元/次 若网站数据量大,需协商
网站运维 提供整站的运维服务,保证网站正常运行。包含:网站故障定位及排除、网站数据备份和恢复、网站攻击及木马等问题的处理等 标准收费:2000元/年 IP 5000以上需协商

发表评论

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

51建站客服微信二维码
点击这里购买