<?php use Action\AbstractAction; use LibModels\Wap\Passport\BackData; use LibModels\Wap\Passport\RegData; use Plugin\Helpers; /** * 频道选择 */ class BackController extends AbstractAction { /** * 通过邮箱找回密码 */ public function emailAction() { $this->setTitle('找回密码-通过邮箱'); $data = array( 'backUrl' => Helpers::url('/signin.html'), 'headerText' => '找回密码', 'isPassportPage' => true, 'backEmail' => true ); // 生成HTML (emailback.html) //$this->_view->html('emailback'); $this->_view->display('email', $data); } /** * 发送邮箱验证码 */ public function sendemailAction() { $result = array('code' => 400, 'message' => '邮箱格式不正确,请重新输入', 'data' => ''); do { /* 判断是不是AJAX请求 */ if (!$this->isAjax()) { break; } $email = $this->post('email', ''); // 判断邮箱是否有效 if (!Helpers::verifyEmail($email)) { break; } // 发送邮箱验证码 $result = BackData::sendCodeToEmail($email); if ($result['code'] === 200) { $result['data'] = Helpers::url('/passport/back/resendemail', array( 'email' => $email, )); } } while (false); $this->echoJson($result); } /** * 重新发送邮箱验证码 */ public function resendemailAction() { $result = array('code' => 400, 'message' => '重发邮件失败'); do { if (!$this->isAjax()) { break; } $email = $this->get('email', ''); // 发送邮箱验证码 $return = BackData::sendCodeToEmail($email); if (!empty($return)) { $result = $return; } } while (false); $this->echoJson($result); } /** * 邮箱找回密码-成功 */ public function successAction() { $email = $this->get('email', ''); // 判断是否允许访问, 不允许则跳转到错误页面 if (!Helpers::verifyEmail($email)) { $this->error(); } // 获取到邮箱域名 list($name, $domain) = explode('@', $email); $domain_name = 'http://' . (($domain == 'gmail.com') ? 'mail.google.com' : 'mail.' . $domain); $data = array( 'backUrl' => Helpers::url('/emailback.html'), 'headerText' => '找回密码', 'isPassportPage' => true, 'backEmailSuccess' => true, 'goEmail' => $domain_name, 'resendUrl' => Helpers::url('/passport/back/resendemail', array( 'email' => $email, )), ); $this->setTitle('找回密码-通过邮箱'); $this->_view->display('email-success', $data); } /** * 根据邮箱修改密码 * * @return array 根据邮箱修改密码的结果 */ public function passwordByEmailAction() { if ($this->isAjax()) { $pwd = $this->post('password', ''); $code = $this->post('code', ''); $data = BackData::modifyPasswordByEmail($pwd, $code); $result = array('code' => 200, 'data' => Helpers::url('/signin.html') ); if (strpos($data, 'history.back') !== false) { $result['code'] = 400; $result['message'] = '修改失败'; } $this->echoJson($result); // 前端不需要判断结果 } } public function mobileAction() { $this->setTitle('找回密码-通过手机号'); $data = array( 'backUrl' => Helpers::url('/signin.html'), 'headerText' => '找回密码', 'isPassportPage' => true, 'backMobile' => true, 'countrys' => RegData::getAreasData(), 'areaCode' => '+86' ); // 生成HTML (phoneback.html) // $this->_view->html('phoneback'); $this->_view->display('mobile', $data); } /** * 发送手机验证码 */ public function sendcodeAction() { $result = array('code' => 400, 'message' => '密码只能使用数字、字母和半角标点符号,请重新输入', 'data' => ''); do { /* 判断是不是AJAX请求 */ if (!$this->isAjax()) { break; } $phoneNum = $this->post('phoneNum', ''); $areaCode = $this->post('areaCode', 86); if (!Helpers::verifyMobile($phoneNum)) { break; } // 发送手机验证码 $result = BackData::sendCodeToMobile($phoneNum, $areaCode); if (empty($result)) { break; } if ($result['code'] === 200) { $result['data'] = Helpers::url('/passport/back/mobilecode', array( 'phoneNum' => $phoneNum, 'areaCode' => $areaCode, )); } } while (false); $this->echoJson($result); } /** * 校验验证码页面 */ public function mobilecodeAction() { $phoneNum = $this->get('phoneNum', ''); $areaCode = $this->get('areaCode', 86); $areaCode = '+' . $areaCode; $data = array( 'backUrl' => Helpers::url('/phoneback.html'), 'headerText' => '找回密码', 'isPassportPage' => true, 'backCode' => true, 'areaCode' => $areaCode, 'phoneNum' => $phoneNum ); $this->setTitle('找回密码-通过手机号'); $this->_view->display('mobile-code', $data); } /** * 校验手机验证码 * * @return array 校验手机验证码的结果(token) */ public function verifycodeAction() { if ($this->isAjax()) { $phoneNum = $this->post('phoneNum', ''); $code = $this->post('code', ''); $areaCode = $this->post('areaCode', 86); // 校验手机验证码 $result = BackData::validateMobileCode($phoneNum, $code, $areaCode); if ($result['code'] === 200) { $result['data'] = Helpers::url('/passport/back/backcode', array( 'phoneNum' => $phoneNum, 'token' => $result['data']['token'], 'areaCode' => $areaCode, )); } $this->echoJson($result); } } /** * 找回密码 */ public function backcodeAction() { $phoneNum = $this->get('phoneNum', ''); // 手机验证令牌 $token = $this->get('token', ''); $areaCode = $this->get('areaCode', 86); // 邮箱验证码 $code = $this->get('code', ''); // 判断是否允许访问, 不允许则跳转到错误页面 if ((!$token || !Helpers::verifyMobile($phoneNum)) && !$code) { $this->error(); } $data = array( 'backUrl' => Helpers::url('/signin.html'), 'headerText' => '找回密码', 'isPassportPage' => true, 'backNewPwd' => true, 'phoneNum' => $phoneNum, 'token' => $token, 'areaCode' => $areaCode, 'code' => $code ); $this->setTitle('找回密码-输入新密码'); $this->_view->display('new-password', $data); } /** * 根据手机验证码修改密码 * * @return array 根据手机验证码修改密码的结果 */ public function passwordByMobileAction() { if ($this->isAjax()) { $phoneNum = $this->post('phoneNum', ''); $token = $this->post('token', ''); $newpwd = $this->post('password', ''); $areaCode = $this->post('areaCode', 86); // 根据手机验证码修改密码 $result = BackData::modifyPasswordByMobile($phoneNum, $token, $newpwd, $areaCode); if ($result['code'] === 200) { $result['data'] = Helpers::url('/signin.html'); } $this->echoJson($result); } } }