qeephp 修改密码流程
1.users模版
修改密码的模版部分只要把当前用户的密码改为修改后的密码
代码如下:
function changePassword($password) { $this->password=$password; $this->save(); }
2.控制器部分
修改密码的控制器部分主要包括:判断新密码格式是否符合要求,判断两次输入的密码是否一致,判断旧密码是否正确,
如果有一项不通过,则break并返回错误信息渲染form表单,如果全部通过,则调用model的changePassword()保存密码并跳转到首页。
代码如下:
function actionChangePassword() { if (request_is_post()) { $oldpass=post('oldpass'); $newpass=post('newpass'); $newpass_repeat=post('newpass_repeat'); do{ $errors=array(); //判断旧密码是否正确 $users=Users::validateLogin($this->_login_user['username'], $oldpass); if ($users==false) { $errors['oldpass'][]='旧密码输入不正确'; } //判断新密码是否符合要求 if (strlen($newpass)<6) { $errors['newpass'][]='密码不能少于6位'; } if ($newpass!=$newpass_repeat) { $errors['newpass_repeat'][]='两次输入的密码不一致'; } if (count($errors)) { $this->_view['errors']=$errors; break; } $users->changePassword($newpass); return $this->_redirect(url('default/index')); }while(0); } }
3.form表
修改密码的表单部分包括:旧密码,新密码,重新输入密码,提交按钮,以及错误提示。
其中,count($errors['newpass'])前面要加@,因为可能会没有此键值,如果不加@会报错。
代码如下:
1 <?PHP $this->_extends('_layouts/default_layout'); ?> 2 <?PHP $this->_block('contents');?> 3 <div> 4 <form id='form_user' name='form_user' 5 method='post' action="<?php echo url('users/changepassword')?>"> 6 <p> 7 <label for='oldpass'>旧密码:</label> 8 <input id='oldpass' name='oldpass' type='password'/> 9 <?php if (@count($errors['oldpass'])) { 10 echo implode(',', $errors['oldpass']); 11 }?> 12 </p> 13 <p> 14 <label for='newpass'>新密码:</label> 15 <input id='newpass' name='newpass' type='password'/> 16 <?php if (@count($errors['newpass'])) { 17 echo implode(',', $errors['newpass']); 18 }?> 19 </p> 20 <p> 21 <label for='newpass_repeat'>再次输入密码:</label> 22 <input id='newpass_repeat' name='newpass_repeat' type='password'/> 23 <?php if (@count($errors['newpass_repeat'])) { 24 echo implode(',', $errors['newpass_repeat']); 25 }?> 26 </p> 27 <p> 28 <input name='submit' type="submit" value='提交'/> 29 </p> 30 </form> 31 </div> 32 33 <?PHP $this->_endblock();?>