/** * 忘记密码通过邮件重置新密码处理(支持 ajax). * status: 0 用户名, 1 密码, 2 确认密码, 8 重置失败, 9 重置成功 * * @access public * @return void * @author Liuping <*****@*****.**> */ public function forgotPasswdByEmailAction() { $username = I('post.username', ''); $username = authcode($username, 'DECODE', C('AUTH_KEY')); $email = I('post.email', ''); $email = authcode($email, 'DECODE', C('AUTH_KEY')); $passwd = I('post.passwd', ''); $rePasswd = I('post.repasswd', ''); $pattern = '/^.{6,20}$/'; $result = []; // 校验该用户是否有重置密码记录 $logModel = new UserResetpwdLogModel(); $model = new UserModel(); $userInfo = $model->checkUserAndEmail($username, $email); if (empty($username)) { $result['status'] = 0; $result['msg'] = L('CONTROLLER_MSG37'); } elseif (empty($email)) { $result['status'] = 1; $result['msg'] = L('CONTROLLER_MSG37'); } elseif (empty($passwd) || empty($rePasswd)) { $result['status'] = 2; $result['msg'] = L('CONTROLLER_MSG1'); } elseif ($passwd != $rePasswd) { $result['status'] = 2; $result['msg'] = L('CONTROLLER_MSG15'); } elseif (!preg_match($pattern, $passwd)) { $result['status'] = 2; $result['msg'] = L('CONTROLLER_MSG16'); } elseif (!$logModel->checkEmail($username, $email)) { $result['status'] = 3; $result['msg'] = L('CONTROLLER_MSG33'); } elseif (!$userInfo) { $result['status'] = 1; $result['msg'] = L('CONTROLLER_MSG36'); } else { if ($model->resetPasswd($username, $passwd)) { if ($this->isLogin()) { $this->logout(); } // 重置密码成功, 设置为登录状态 $this->writeUserInfo($userInfo); $result['status'] = 9; $result['msg'] = L('CONTROLLER_MSG34'); $result['url'] = U('Home/Index/index'); } else { $result['status'] = 8; $result['msg'] = L('CONTROLLER_MSG49'); } } if (IS_AJAX) { $this->ajaxReturn($result, 'json'); } elseif ($result['status'] == 9) { //$this->success($result['msg'], $result['url']); $this->assign('jumpUrl', $result['url']); $this->display('successResetPwd'); } else { $this->error($result['msg']); } }