WordPress4.7注册页添加验证问题

通常网站的注册页都使用验证码来进行验证,但是有没有考虑过使用验证问题来验证呢?使用问题验证的好处在于:防止机器人注册(和验证码一样),只有知道答案的人才能注册(可用于限制用户注册)。下面将添加一个验证问题:中国的首都是哪里?答案是个正常人都知道:北京。

WordPress4.7注册页添加验证问题

将下面的代码添加到主题的functions.php即可。

  1. /**
  2.  * WordPress 注册表单添加验证问题
  3.  * https://wobeibk.com/1193.html
  4.  */
  5. add_action( 'register_form', 'add_security_question' );
  6. function add_security_question() { ?>
  7.     <p>
  8.     <label><?php _e('中国的首都是哪里?') ?><br />
  9.         <input type="text" name="user_proof" id="user_proof" class="input" size="25" tabindex="20" /></label>
  10.     </p>
  11. <?php }
  12. add_action( 'register_post', 'add_security_question_validate', 10, 3 );
  13. function add_security_question_validate( $sanitized_user_login$user_email$errors) {
  14.     // 如果没有回答
  15.     if (!isset($_POST[ 'user_proof' ]) || emptyempty($_POST[ 'user_proof' ])) {
  16.         return $errors->add( 'proofempty', '<strong>错误</strong>: 您还没有回答问题。'  );
  17.     // 如果答案不正确
  18.     } elseif ( strtolower$_POST[ 'user_proof' ] ) != '北京' ) {
  19.         return $errors->add( 'prooffail', '<strong>错误</strong>: 您的回答不正确。'  );
  20.     }
  21. }

注:第 8 行是问题,第 19 行是正确的答案。

如果你想限制用户注册,将问题和答案设置为只有某些人知道的即可(比如只在某个Q群告知)

管理员

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: