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();?>

 

posted on 2014-12-31 09:55  jly553  阅读(179)  评论(0编辑  收藏  举报