wordpress新用户注册添加验证问题
2014-04-06 09:04
267 查看
最近越来越多使用wordpress建站的小伙伴给网站加上了用户中心功能,并且开放了网站注册,但是随之而来的就是大量的机器注册的垃圾用户,有些小伙伴非常机智的利用插件给注册单表加上了验证码,有些小伙伴则想给注册单表添加一个验证问答,其实小V个人也推荐使用验证问答,这样对于某些限制注册的网站非常适用,某些网站可能仅仅只开放给部分人群,则可以仅仅将答案告诉那部分人群即可,这样的效果验证码显然不能实现。先上一张效果图:
将下面的代码添加到主题的 functions.php 即可:
将下面的代码添加到主题的 functions.php 即可:
add_action( 'register_form', 'add_security_question' ); function add_security_question() { ?> <p> <label><?php _e('请输入本站域名的中间部分:'v7v3') ?><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' ] ) != v7v3' ) { return $errors->add( 'prooffail', '<strong>错误</strong>: 您的回答不正确。' ); } }另外还可以添加多个随机问题,代码如下:
function rand_reg_question(){ $register_number=rand(0,1); // 设置随机数的返回范围 $_SESSION['register_number']=$register_number; } add_action('login_head','rand_reg_question'); global $register_questions; global $register_answers; // 添加问题数组 $register_questions=array('中国的首都在哪里?','Google是哪个国家的公司?'); // 添加答案数组(与上面的问题对应) $register_answers=array('北京','美国'); add_action( 'register_form', 'add_security_question' ); function add_security_question() { global $register_questions; $register_number=$_SESSION['register_number']; ?> <p> <label><?php echo $register_questions[$register_number];?><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) { global $register_answers; $register_number=$_SESSION['register_number']; if (!isset($_POST[ 'user_proof' ]) || empty($_POST[ 'user_proof' ])) { return $errors->add( 'proofempty', '<strong>错误</strong>: 您还没有回答问题。' ); } elseif ( strtolower( $_POST[ 'user_proof' ] ) != $register_answers[$register_number] ) { return $errors->add( 'prooffail', '<strong>错误</strong>: 您的回答不正确。' ); } }注:请编辑 14 和 16 行修改问题和答案,如果你修改了问题的数量,请记得修改第 6 行的 随机数返回范围 rand(0,1) ,比如 3 个问题,修改为 rand(0,2)。
相关文章推荐
- wordpress添加用户注册以及登录IP记录
- wordpress添加用户注册以及登录IP记录
- asp.net用户注册的与密码强度及验证的相关问题。对上一次详细叙述。
- ASP.NET 2.0 用户注册控件的密码验证问题
- wordpress注册加上问题验证
- WordPress: 后台添加 用户注册时间 和登录IP 显示
- 在WordPress中注册新用户时无法收到确认邮件的问题
- 注册用户添加Js和Ajax验证
- QTP实例:新增用户实例,包含邮箱、手机号码的验证,还判断了添加账户是否已存在数据库的问题
- django学习——用户注册时的密码加密及登陆时的密码验证问题
- wordpress自定义新用户注册邮件提醒样式
- 553 relay check local fail. (本域用户必须通过验证) ----一个老项目发邮件问题
- 用户登录验证安全问题
- 代码测试:简单用户注册信息验证
- PHP用户注册邮箱验证激活帐号
- Ubuntu新添加用户无法sudo问题的解决
- ASP.NET实现用户注册和验证功能(第4节)
- C#访问Java的WebService添加Header验证的问题
- thinkPHP自动验证、自动添加及表单错误问题分析
- struts2+jquery组合验证注册用户是否存在