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调用指定分类有某TAG标签的文章
- Wordpress文章调用同分类上下篇文章
- Wordpress指定分类从第二篇文章开始调用
- Wordpress分页插件设置404错误处理办法
- Wordpress设置404页面的方法
- Wordpress禁止编辑器添加<p>标签去除空标签
- Wordpress改HTTPS后台无法登陆或提示重定向过多的解决方法
- Wordpress内容页根据分类ID选用不同模板
- Worderpress判断自定字段为空或不为空
- Wordpress调用当前分类的文章并实现列表分页
- Wordpress文章页the_author()调用作者失效
- Wordpress分类和页面的区别及调用当前页面的子页面方法