Wordpress禁止指定用户名注册及增加邮箱验证
Wordpress国内外都有不少用户在使用,安全性相对较高,有些企业站并不需要许多用户交互,完全关闭注册都可以,也可以减少被机器扫了后强制批量注册的风险。
Wordpress后台设置禁止用户注册
系统本身有这个限制,后台找到
系统 -> 常规 -> 成员资格
这里默认不勾选该选项,检查一下,也可以先勾选保存。再取消勾选再次保存。在域名后面加 /wp-login.php?action=register 访问后可以看到,已经有“错误:目前不允许用户注册”的提示。
很多情况下这个方法不能完全杜绝“垃圾”用户注册,还不断被同一个方法“骚扰”,可以接着设置禁止指定用户名和加入邮箱验证。
Wordpress禁止指定用户名注册
找到主题下的functions.php,底部加入如下代码,注意下面的 $forbidden = array('禁止的用户名1','禁止的用户名2') 根据实际情况增加或修改即可。
/** * WordPress 禁止用户注册某些用户名 */ function sozot_validate_username($valid, $username) { $forbidden = array('directory', 'domain', 'download', 'downloads', 'edit', 'editor', 'email', 'ecommerce', 'forum', 'forums', 'favorite', 'feedback', 'follow', 'files', 'gadget', 'gadgets', 'games', 'guest', 'group', 'groups', 'homepage', 'hosting', 'hostname', 'httpd', 'https', 'information', 'image', 'images', 'index', 'invite', 'intranet', 'indice', 'iphone', 'javascript', 'knowledgebase', 'lists','websites', 'webmaster', 'workshop', 'yourname', 'yourusername', 'yoursite', 'yourdomain'); $pages = get_pages(); foreach ($pages as $page) { $forbidden[] = $page->post_name; } if(!$valid || is_user_logged_in() && current_user_can('create_users') ) return $valid; $username = strtolower($username); if ($valid && strpos( $username, ' ' ) !== false) $valid=false; if ($valid && in_array( $username, $forbidden )) $valid=false; if ($valid && strlen($username) < 5) $valid=false; return $valid; } add_filter('validate_username', 'sozot_validate_username', 10, 2); function sozot_registration_errors($errors) { if ( isset( $errors->errors['invalid_username'] ) ) $errors->errors['invalid_username'][0] = __( '错误:该用户名不允许注册!', 'sozot' ); return $errors; } add_filter('registration_errors', 'sozot_registration_errors');
Wordpress增加注册邮箱验证
继续在 functions.php 文件底部添加
//邮箱登录增加验证功能 add_action( 'register_form', 'add_security_question' ); function add_security_question() { ?> <p> <label><?php _e('预设问题') ?><br /> <input type="text" name="cccitu_proof" id="cccitu_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[ 'cccitu_proof' ]) || empty($_POST[ 'cccitu_proof' ])) { return $errors->add( 'proofempty', '<strong>错误</strong>: 您还没有回答问题。' ); // 如果答案不正确 } elseif ( strtolower( $_POST[ 'cccitu_proof' ] ) != '设置好的答案' ) { return $errors->add( 'prooffail', '<strong>错误</strong>: 您的回答不正确。' ); } }
以上办法基本客户端(浏览器)能杜绝用户的恶意注册行为,但机器人仍有可能成功注册,别问我为啥知道,都是泪!尽可能做好软件和服务器的更新,及时发现问题,把损失降到最低。
相关文章
- Wordpress栏目用分页插件与其他插件冲突出现404错误解决办法
- Wordpress首页列表页文章根据权重倒序排序
- Wordpress文章缩略图特色图片the_post_thumbnail函数应用
- Wordpress默认编辑器添加文字大小、字体
- Wordpress设置上传图片默认使用全尺寸
- Wordpress自定义字段插件Advanced Custom Fields使用及调用字段亲测有效
- Wordpress函数is_home判断是否首页失效及处理办法
- Wordpress插件contact form 7设置占位符描述文本placeholder
- Wordpress在任意页面调用联系表单简码
- Wordpress反复中毒,如何有效防止利用漏洞安装文件管理插件
- Wordpress调用指定分类有某TAG标签的文章
- Wordpress文章调用同分类上下篇文章