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内添加以下信息,不过我测试了没效果,有兴趣的可以试试:
机器人注册问题现在是解决了,那要是人工进行垃圾注册的怎么处理?
首先判断哪种人工注册是垃圾注册,然后利用WordPress的wp-cron来进行自动删除垃圾账号。
一般正常的注册,注册完之后,短时间内都是会通过邮箱来激活用户名的,我们可以设定个时间,比如12个小时,超过12小时后还没有进行邮箱激活的,那么就判定为是垃圾注册,让系统自动删除这次注册账号。
先把访客触发wp-cron.php计划任务的功能禁用,否则会产生额外的负载。在wp-config.php中添加:
define('DISABLE_WP_CRON', true);
然后在functions.php内添加以下信息:
目前不清楚这个wp-cron多久就被WordPress调用一次,简单测试了一下,至少在1分钟内是有被调用的。
但为了防止没有及时被调用,可以用系统的crontab计划任务来执行wp-cron.php,添加以下计划任务,12小时执行一次:
0 0,12 * * * php -f /home/wwwroot/yourwebsite.com/wp-cron.php >/dev/null 2>&1
注意你的php路径和网站路径,按需修改。至此,在注册后12小时内未进行激活的用户,就会被系统自动删除了,此方法只适用于单站点WordPress,多站点WordPress不适用。
Chrome 86.0.4240.198 | Windows 7
北京市 移动
前端代码里怎么添加 ,是二开的模板