WordPress纯代码添加注册验证功能

WordPress带有用户评论、用户注册等功能,使用比较广泛,但有时会碰到机器人恶意注册,所以添加一些注册验证功能还是必要的。
纯代码添加注册验证功能,网上有很多分享,现在推荐几种较为好用的,都是通过编辑主题的functions.php文件实现的。

方法一:

add_action( 'register_form', 'add_security_question' );
function add_security_question() { ?>
    <p>
    <label><?php _e('请输入本站域名:lianghg.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' ] ) != 'lianghg.com' ) {
        return $errors->add( 'prooffail', '<strong>错误</strong>: 您的回答不正确。'  );
    }
}

上面红色字体的信息,就是你要设定的注册时要验证的问题和答案,按需修改。
注册时效果:

不过,由于问题和答案都是固定的,如果被专门针对的话,也是防止不了机器人的。
因此,可以增多几个问题和答案,或者使用数字加法公式来进行验证。

方法二,多问题验证:

该资源需登录评论本文后刷新网页查看,如果没有账号,可以先进行注册


注册时,验证问题会随机出现,如图:


方法二貌似和最新版本的WordPress存在兼容性,在后台修改添加时,会出现无法保存的情况。

方法三,随机数字求和验证:

该资源需登录评论本文后刷新网页查看,如果没有账号,可以先进行注册


效果如下图:


以上三种方法选择其中一种即可,不可同时使用。
另外,有些邮箱在收到WordPress注册邮件时,点击邮件内的注册链接会提示失效,主要原因是链接后面的“>”被解析到了注册链接里面,删除链接前后的“<”“>”就行了。
有两个文件要修改:

该资源需登录评论本文后刷新网页查看,如果没有账号,可以先进行注册


这样修改之后,在注册或修改密码时,链接就不会出现失效的问题了。
要注意的是,如果更新了WordPress版本,记得重新再修改这两个文件。
在网上找到个不用修改以上两个文件的方法,就是在functions.php内添加以下信息,不过我测试了没效果,有兴趣的可以试试:

该资源登录后才可访问,如果没有账号,可以先进行注册

发表评论