You've already forked qlg.tsgz.moe
							
							
		
			
				
	
	
		
			975 lines
		
	
	
		
			31 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			975 lines
		
	
	
		
			31 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | |
| namespace wstmart\home\controller;
 | |
| use wstmart\common\model\Users as MUsers;
 | |
| use wstmart\common\model\LogSms;
 | |
| /**
 | |
|  * ============================================================================
 | |
|  * 用户控制器
 | |
|  */
 | |
| class Users extends Base{
 | |
|     protected $beforeActionList = [
 | |
|           'checkAuth' =>  ['except'=>'getverify,login,logout,regist,toregist,checklogin,getphoneverifycode,checkloginkey,checkemail,checkfindkey,protocol,forgetpass,forgetpasst,resetpass,forgetpasss,forgetpassf,findpass,getfindphone,checkfindphone,getfindemail,tologinbox']
 | |
|     ];
 | |
| 	/**
 | |
|      * 去登录
 | |
|      */
 | |
| 	public function login(){
 | |
| 		$USER = session('WST_USER');
 | |
| 		//如果已经登录了则直接跳去用户中心
 | |
| 		if(!empty($USER) && !empty($USER['userId'])){
 | |
| 			$this->redirect("users/index");
 | |
| 		}
 | |
| 		$loginName = cookie("loginName");
 | |
| 		if(!empty($loginName)){
 | |
| 			$this->assign('loginName',cookie("loginName"));
 | |
| 		}else{
 | |
| 			$this->assign('loginName','');
 | |
| 		}
 | |
| 		return $this->fetch('user_login');
 | |
| 	}
 | |
| 		    
 | |
|     /**
 | |
| 	 * 用户退出
 | |
| 	 */
 | |
| 	public function logout(){
 | |
| 		session('WST_USER',null);
 | |
| 		setcookie("loginPwd", null);
 | |
| 		session('WST_HO_CURRENTURL', null);
 | |
| 		hook('afterUserLogout');
 | |
| 		return WSTReturn("退出成功",1);
 | |
| 		
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
|      * 用户注册
 | |
|      * 
 | |
|      */
 | |
| 	public function regist(){
 | |
| 		$USER = session('WST_USER');
 | |
| 		//如果已经登录了则直接跳去用户中心
 | |
| 		if(!empty($USER) && $USER['userId']!=''){
 | |
| 			$this->redirect("users/index");
 | |
| 		}
 | |
| 		$loginName = cookie("loginName");
 | |
| 		if(!empty($loginName)){
 | |
| 			$this->assign('loginName',cookie("loginName"));
 | |
| 		}else{
 | |
| 			$this->assign('loginName','');
 | |
| 		}
 | |
| 		return $this->fetch('regist');
 | |
| 	}
 | |
| 	
 | |
| 	
 | |
| 	/**
 | |
| 	 * 新用户注册
 | |
| 	 */
 | |
| 	public function toRegist(){
 | |
| 		$m = new MUsers();
 | |
| 		$rs = $m->regist();
 | |
| 		$rs['url'] = session('WST_HO_CURRENTURL');
 | |
| 		return $rs;
 | |
| 	
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * 验证登录
 | |
| 	 *
 | |
| 	 */
 | |
| 	public function checkLogin(){
 | |
| 		$m = new MUsers();
 | |
|     	$rs = $m->checkLogin();
 | |
|     	$rs['url'] = session('WST_HO_CURRENTURL');
 | |
|     	return $rs;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * 获取验证码
 | |
| 	 */
 | |
| 	public function getPhoneVerifyCode(){
 | |
| 		$userPhone = input("post.userPhone");
 | |
| 		$rs = array();
 | |
| 		if(!WSTIsPhone($userPhone)){
 | |
| 			return WSTReturn("手机号格式不正确!");
 | |
| 			exit();
 | |
| 		}
 | |
| 		$m = new MUsers();
 | |
| 		$rs = $m->checkUserPhone($userPhone,(int)session('WST_USER.userId'));
 | |
| 		if($rs["status"]!=1){
 | |
| 			return WSTReturn("手机号已存在!");
 | |
| 			exit();
 | |
| 		}
 | |
| 		$phoneVerify = rand(100000,999999);
 | |
|         $rv = ['status'=>-1,'msg'=>'短信发送失败'];
 | |
|         $tpl = WSTMsgTemplates('PHONE_USER_REGISTER_VERFIY');
 | |
|         if( $tpl['tplContent']!='' && $tpl['status']=='1'){
 | |
|             $params = ['tpl'=>$tpl,'params'=>['MALL_NAME'=>WSTConf("CONF.mallName"),'VERFIY_CODE'=>$phoneVerify,'VERFIY_TIME'=>10]];
 | |
|             $m = new LogSms();
 | |
|             $rv = $m->sendSMS(0,$userPhone,$params,'getPhoneVerify',$phoneVerify);
 | |
|         }
 | |
| 		if($rv['status']==1){
 | |
| 			session('VerifyCode_userPhone',$phoneVerify);
 | |
| 			session('VerifyCode_userPhone_Time',time());
 | |
| 		}
 | |
| 		return $rv;
 | |
| 	}
 | |
| 	
 | |
| 	
 | |
| 	/**
 | |
| 	 * 判断手机或邮箱是否存在
 | |
| 	 */
 | |
| 	public function checkLoginKey(){
 | |
| 		$m = new MUsers();
 | |
| 		if(input("post.loginName"))$val=input("post.loginName");
 | |
| 		if(input("post.userPhone"))$val=input("post.userPhone");
 | |
| 		if(input("post.userEmail"))$val=input("post.userEmail");
 | |
|         $userId = (int)session('WST_USER.userId');
 | |
| 		$rs = WSTCheckLoginKey($val,$userId);
 | |
| 		if($rs["status"]==1){
 | |
| 			return array("ok"=>"");
 | |
| 		}else{
 | |
| 			return array("error"=>$rs["msg"]);
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * 判断邮箱是否存在
 | |
| 	 */
 | |
| 	public function checkEmail(){
 | |
| 		$data = $this->checkLoginKey();
 | |
| 		if(isset($data['error']))$data['error'] = '对不起,该邮箱已存在';
 | |
| 		return $data;
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * 判断用户名是否存在/忘记密码
 | |
| 	 */
 | |
| 	public function checkFindKey(){
 | |
| 		$m = new MUsers();
 | |
| 		$userId = (int)session('WST_USER.userId');
 | |
| 		$rs = WSTCheckLoginKey(input("post.loginName"),$userId);
 | |
| 		if($rs["status"]==1){
 | |
| 			return array("error"=>"该用户不存在!");
 | |
| 		}else{
 | |
| 			return array("ok"=>"");
 | |
| 		}
 | |
| 	
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * 跳到用户注册协议
 | |
| 	 */
 | |
| 	public function protocol(){
 | |
| 		return $this->fetch("user_protocol");
 | |
| 	}
 | |
| 	
 | |
| 	/**
 | |
| 	 * 用户中心
 | |
| 	 */
 | |
| 	public function index(){
 | |
| 		session('WST_MENID0',0);
 | |
| 		session('WST_MENUID30',0);
 | |
|         // 待付款 待收货 待评价
 | |
|         $info = model('home/Users')->getStatusNum();
 | |
|         $this->assign($info);
 | |
|         $m = new MUsers();
 | |
|         $data = $m->getById((int)session('WST_USER.userId'));
 | |
|         $this->assign('data',$data);
 | |
| 		return $this->fetch('users/index');
 | |
| 	}
 | |
| 	
 | |
| 
 | |
| 	/**
 | |
| 	* 跳去修改个人资料
 | |
| 	*/
 | |
| 	public function edit(){
 | |
| 		$m = new MUsers();
 | |
| 		//获取用户信息
 | |
| 		$userId = (int)session('WST_USER.userId');
 | |
|         $data = $m->getById($userId);
 | |
|         $this->assign('data',$data);
 | |
| 		return $this->fetch('users/user_edit');
 | |
| 	}
 | |
| 	/**
 | |
| 	* 跳去修改密码页
 | |
| 	*/
 | |
| 	public function editPass(){
 | |
| 		$m = new MUsers();
 | |
| 		//获取用户信息
 | |
| 		$userId = (int)session('WST_USER.userId');
 | |
| 		$data = $m->getById($userId);
 | |
| 		$this->assign('data',$data);
 | |
| 		return $this->fetch('users/security/user_pass');
 | |
| 	}
 | |
| 	/**
 | |
| 	* 修改密码
 | |
| 	*/
 | |
| 	public function passedit(){
 | |
| 		$userId = (int)session('WST_USER.userId');
 | |
| 		$m = new MUsers();
 | |
| 		$rs = $m->editPass($userId);
 | |
| 		return $rs;
 | |
| 	}
 | |
| 	/**
 | |
|     * 修改
 | |
|     */
 | |
|     public function toEdit(){
 | |
|         $m = new MUsers();
 | |
|         $rs = $m->edit();
 | |
|         return $rs;
 | |
|     }
 | |
|     /**
 | |
|      * 安全设置页
 | |
|      */
 | |
|     public function security(){
 | |
|     	//获取用户信息
 | |
|     	$m = new MUsers();
 | |
|     	$data = $m->getById((int)session('WST_USER.userId'));
 | |
|     	if($data['userPhone']!='')$data['userPhone'] = WSTStrReplace($data['userPhone'],'*',3);
 | |
|     	if($data['userEmail']!='')$data['userEmail'] = WSTStrReplace($data['userEmail'],'*',2,'@');
 | |
|     	$this->assign('data',$data);
 | |
|     	return $this->fetch('users/security/index');
 | |
|     }
 | |
|     /**
 | |
|      * 修改邮箱页
 | |
|      */
 | |
|     public function editEmail(){
 | |
|     	hook('homeControllerUsersEditEmail');
 | |
|     	//获取用户信息
 | |
|     	$userId = (int)session('WST_USER.userId');
 | |
|     	$m = new MUsers();
 | |
|     	$data = $m->getById($userId);
 | |
|     	if($data['userEmail']!='')$data['userEmail'] = WSTStrReplace($data['userEmail'],'*',2,'@');
 | |
|     	$this->assign('data',$data);
 | |
|     	$process = 'One';
 | |
|     	$this->assign('process',$process);
 | |
|     	if($data['userEmail']){
 | |
|     		return $this->fetch('users/security/user_edit_email');
 | |
|     	}else{
 | |
|     		return $this->fetch('users/security/user_email');
 | |
|     	}
 | |
|     }
 | |
|     /**
 | |
|      * 发送验证邮件/绑定邮箱
 | |
|      */
 | |
|     public function getEmailVerify(){
 | |
|     	$userEmail = input('post.userEmail');
 | |
|     	if(!$userEmail){
 | |
|     		return WSTReturn('请输入邮箱!',-1);
 | |
|     	}
 | |
|     	$code = input("post.verifyCode");
 | |
|     	$process = input("post.process");
 | |
|     	if(!WSTVerifyCheck($code)){
 | |
|     		return WSTReturn('验证码错误!',-1);
 | |
|     	}
 | |
|     	$rs = WSTCheckLoginKey($userEmail,(int)session('WST_USER.userId'));
 | |
|     	if($rs["status"]!=1){
 | |
|     		return WSTReturn("邮箱已存在!");
 | |
|     		exit();
 | |
|     	}
 | |
|         $code = rand(0,999999);
 | |
|         $sendRs = ['status'=>-1,'msg'=>'邮件发送失败'];
 | |
|         $tpl = WSTMsgTemplates('EMAIL_BIND');
 | |
|         if( $tpl['tplContent']!='' && $tpl['status']=='1'){
 | |
|             $find = ['${LOGIN_NAME}','${SEND_TIME}','${VERFIY_CODE}','${VERFIY_TIME}'];
 | |
|             $replace = [session('WST_USER.loginName'),date('Y-m-d H:i:s'),$code,30];
 | |
|             $sendRs = WSTSendMail($userEmail,'绑定邮箱',str_replace($find,$replace,$tpl['content']));
 | |
|         }
 | |
|     	if($sendRs['status']==1){
 | |
|             // 绑定的邮箱
 | |
|             session('email.val',$userEmail);
 | |
|             // 验证码
 | |
|             session("email.key", $code);
 | |
|             // 发起绑定邮箱的时间;
 | |
|             session('email.time',time());
 | |
|             return WSTReturn("发送成功",1);
 | |
|         }else{
 | |
|             return WSTReturn($sendRs['msg'],-1);
 | |
|         }
 | |
|     }
 | |
|     /**
 | |
|      * 绑定邮箱
 | |
|      */
 | |
|     public function emailEdit(){
 | |
|     	$USER = session('WST_USER');
 | |
| 		if(empty($USER) && $USER['userId']==''){
 | |
| 			$this->redirect("home/users/login");
 | |
| 		}
 | |
|         $bindTime = session('email.time');
 | |
|         $code = session('email.key');
 | |
|         $bindEmail = session('email.val');
 | |
| 
 | |
|     	if(time()>floatval($bindTime)+30*60)$this->error('验证码已失效!');
 | |
|     	$rs = WSTCheckLoginKey($bindEmail,(int)session('WST_USER.userId'));
 | |
| 
 | |
|     	if($rs["status"]!=1){
 | |
|     		$this->error('邮箱已存在!');
 | |
|     		exit();
 | |
|     	}
 | |
|         $secretCode = input('secretCode');
 | |
| 
 | |
|         if($code!=$secretCode)return WSTReturn('校验码错误',-1);
 | |
| 
 | |
|     	$m = new MUsers();
 | |
|     	$rs = $m->editEmail((int)session('WST_USER.userId'),$bindEmail);
 | |
|     	if($rs['status'] == 1){
 | |
|             // 清空session
 | |
|             session('email',null);
 | |
|             return WSTReturn('验证通过',1);
 | |
|     	}
 | |
|     	$this->error('绑定邮箱失败');
 | |
|     }
 | |
|     /**
 | |
|     * 完成邮箱绑定
 | |
|     */
 | |
|     public function doneEmailBind(){
 | |
|         $this->assign('process','Three');
 | |
|         return $this->fetch('users/security/user_email');
 | |
|     }
 | |
|     /**
 | |
|      * 发送验证邮件/修改邮箱
 | |
|      */
 | |
|     public function getEmailVerifyt(){
 | |
|     	$m = new MUsers();
 | |
|     	$data = $m->getById(session('WST_USER.userId'));
 | |
|     	$userEmail = $data['userEmail'];
 | |
|     	if(!$userEmail){
 | |
|     		return WSTReturn('请输入邮箱!',-1);
 | |
|     	}
 | |
|     	$code = input("post.verifyCode");
 | |
|     	if(!WSTVerifyCheck($code)){
 | |
|     		return WSTReturn('验证码错误!',-1);
 | |
|     	}
 | |
| 
 | |
|     	$code = rand(0,999999);
 | |
|         $sendRs = ['status'=>-1,'msg'=>'邮件发送失败'];
 | |
|         $tpl = WSTMsgTemplates('EMAIL_EDIT');
 | |
|         if( $tpl['tplContent']!='' && $tpl['status']=='1'){
 | |
|             $find = ['${LOGIN_NAME}','${SEND_TIME}','${VERFIY_CODE}','${VERFIY_TIME}'];
 | |
|             $replace = [session('WST_USER.loginName'),date('Y-m-d H:i:s'),$code,30];
 | |
|             $sendRs = WSTSendMail($userEmail,'绑定邮箱',str_replace($find,$replace,$tpl['content']));
 | |
|         }
 | |
|         if($sendRs['status']==1){
 | |
|             // 修改的用户
 | |
|             session('email.uId',(int)session('WST_USER.userId'));
 | |
|             // 绑定的邮箱
 | |
|             session('email.val',$userEmail);
 | |
|             // 验证码
 | |
|             session("email.key", $code);
 | |
|             // 发起绑定邮箱的时间;
 | |
|             session('email.time',time());
 | |
|             return WSTReturn("发送成功",1);
 | |
|         }else{
 | |
|             return WSTReturn($sendRs['msg'],-1);
 | |
|         }
 | |
|     }
 | |
|     /**
 | |
|      * 修改邮箱
 | |
|      */
 | |
|     public function emailEditt(){
 | |
|     	$USER = session('WST_USER');
 | |
|     	if(empty($USER) && $USER['userId']!=''){
 | |
|     		$this->redirect("home/users/login");
 | |
|     	}
 | |
| 
 | |
|         $bindTime = session('email.time');
 | |
|         $code = session('email.key');
 | |
|         $bindEmail = session('email.val');
 | |
|         $uId = (int)session('email.uId');
 | |
| 
 | |
|         if(time()>floatval($bindTime)+30*60)$this->error('验证码已失效!');
 | |
|         $rs = WSTCheckLoginKey($bindEmail,(int)session('WST_USER.userId'));
 | |
| 
 | |
|         if($rs["status"]!=1){
 | |
|             $this->error('邮箱已存在!');
 | |
|             exit();
 | |
|         }
 | |
|         $secretCode = input('secretCode');
 | |
| 
 | |
|         if($code!=$secretCode)return WSTReturn('校验码错误',-1);
 | |
| 
 | |
|     	$m = new MUsers();
 | |
|     	$data = $m->getById($uId);
 | |
|     	if($data['userId']==session('WST_USER.userId')){
 | |
|     		return WSTReturn('验证通过',1);
 | |
|     	}
 | |
|         $this->error('无效的用户!');
 | |
|     }
 | |
|     /**
 | |
|     * 修改邮箱第二步
 | |
|     */
 | |
|     public function editEmail2(){
 | |
|         $this->assign('process','Two');
 | |
|         return $this->fetch('users/security/user_edit_email');
 | |
|     }
 | |
|     /**
 | |
|     * 修改邮箱第三步
 | |
|     */
 | |
|     public function editEmail3(){
 | |
|         $this->assign('process','Three');
 | |
|         return $this->fetch('users/security/user_edit_email');
 | |
|     }
 | |
| 
 | |
| 
 | |
| 
 | |
|     /**
 | |
|      * 修改手机页
 | |
|      */
 | |
|     public function editPhone(){
 | |
|     	//获取用户信息
 | |
|     	$userId = (int)session('WST_USER.userId');
 | |
|     	$m = new MUsers();
 | |
|     	$data = $m->getById($userId);
 | |
|     	if($data['userPhone']!='')$data['userPhone'] = WSTStrReplace($data['userPhone'],'*',3);
 | |
|     	$this->assign('data',$data);
 | |
|     	$process = 'One';
 | |
|     	$this->assign('process',$process);
 | |
|     	if($data['userPhone']){
 | |
|     		return $this->fetch('users/security/user_edit_phone');
 | |
|     	}else{
 | |
|     		return $this->fetch('users/security/user_phone');
 | |
|     	}
 | |
|     }
 | |
|     /**
 | |
|      * 跳到发送手机验证
 | |
|      */
 | |
|     public function toApply(){
 | |
|     	return $this->fetch("user_verify_phone");
 | |
|     }
 | |
|     /**
 | |
|      * 绑定手机/获取验证码
 | |
|      */
 | |
|     public function getPhoneVerifyo(){
 | |
|     	$userPhone = input("post.userPhone");
 | |
|     	if(!WSTIsPhone($userPhone)){
 | |
|     		return WSTReturn("手机号格式不正确!");
 | |
|     		exit();
 | |
|     	}
 | |
|     	$rs = array();
 | |
|     	$m = new MUsers();
 | |
|     	$rs = WSTCheckLoginKey($userPhone,(int)session('WST_USER.userId'));
 | |
|     	if($rs["status"]!=1){
 | |
|     		return WSTReturn("手机号已存在!");
 | |
|     		exit();
 | |
|     	}
 | |
|         $data = $m->getById(session('WST_USER.userId'));
 | |
|     	$phoneVerify = rand(100000,999999);
 | |
|         $rv = ['status'=>-1,'msg'=>'短信发送失败'];
 | |
|         $tpl = WSTMsgTemplates('PHONE_EDIT');
 | |
|         if( $tpl['tplContent']!='' && $tpl['status']=='1'){
 | |
|             $params = ['tpl'=>$tpl,'params'=>['LOGIN_NAME'=>$data['loginName'],'VERFIY_CODE'=>$phoneVerify,'VERFIY_TIME'=>10]];
 | |
|             $m = new LogSms();
 | |
|             $rv = $m->sendSMS(0,$userPhone,$params,'getPhoneVerifyo',$phoneVerify);
 | |
|         }
 | |
|     	if($rv['status']==1){
 | |
|     		$USER = [];
 | |
|     		$USER['userPhone'] = $userPhone;
 | |
|     		$USER['phoneVerify'] = $phoneVerify;
 | |
|     		session('Verify_info',$USER);
 | |
|     		session('Verify_userPhone_Time',time());
 | |
|     		return WSTReturn('短信发送成功!',1);
 | |
|     	}
 | |
|     	return $rv;
 | |
|     }
 | |
|     /**
 | |
|      * 绑定手机
 | |
|      */
 | |
|     public function getPhoneVerifyb(){
 | |
|         $userPhone = input("post.userPhone");
 | |
|         if(!WSTIsPhone($userPhone)){
 | |
|             return WSTReturn("手机号格式不正确!");
 | |
|             exit();
 | |
|         }
 | |
|         $rs = array();
 | |
|         $m = new MUsers();
 | |
|         $rs = WSTCheckLoginKey($userPhone,(int)session('WST_USER.userId'));
 | |
|         if($rs["status"]!=1){
 | |
|             return WSTReturn("手机号已存在!");
 | |
|             exit();
 | |
|         }
 | |
|         $data = $m->getById(session('WST_USER.userId'));
 | |
|         $phoneVerify = rand(100000,999999);
 | |
|         $rv = ['status'=>-1,'msg'=>'短信发送失败'];
 | |
|         $tpl = WSTMsgTemplates('PHONE_BIND');
 | |
|         if( $tpl['tplContent']!='' && $tpl['status']=='1'){
 | |
|             $params = ['tpl'=>$tpl,'params'=>['LOGIN_NAME'=>$data['loginName'],'VERFIY_CODE'=>$phoneVerify,'VERFIY_TIME'=>10]];
 | |
|             $m = new LogSms();
 | |
|             $rv = $m->sendSMS(0,$userPhone,$params,'getPhoneVerifyb',$phoneVerify);
 | |
|         }
 | |
|         if($rv['status']==1){
 | |
|             $USER = [];
 | |
|             $USER['userPhone'] = $userPhone;
 | |
|             $USER['phoneVerify'] = $phoneVerify;
 | |
|             session('Verify_info',$USER);
 | |
|             session('Verify_userPhone_Time',time());
 | |
|             return WSTReturn('短信发送成功!',1);
 | |
|         }
 | |
|         return $rv;
 | |
|     }
 | |
|     /**
 | |
|      * 绑定手机
 | |
|      */
 | |
|     public function phoneEdito(){
 | |
|     	$phoneVerify = input("post.Checkcode");
 | |
|     	$process = input("post.process");
 | |
|     	$timeVerify = session('Verify_userPhone_Time');
 | |
|     	if(!session('Verify_info.phoneVerify') || time()>floatval($timeVerify)+10*60){
 | |
|     		return WSTReturn("地址已失效,请重新验证身份!");
 | |
|     		exit();
 | |
|     	}
 | |
|    		if($phoneVerify==session('Verify_info.phoneVerify')){
 | |
|    			$m = new MUsers();
 | |
|    			$rs = $m->editPhone((int)session('WST_USER.userId'),session('Verify_info.userPhone'));
 | |
|    			if($process=='Two'){
 | |
|    				$rs['process'] = $process;
 | |
|    			}else{
 | |
|    				$rs['process'] = '0';
 | |
|    			}
 | |
|    			return $rs;
 | |
|    		}
 | |
|    		return WSTReturn("校验码不一致,请重新输入!");
 | |
|     }
 | |
|     public function editPhoneSu(){
 | |
|     	$pr = input("get.pr");
 | |
|     	$process = 'Three';
 | |
|     	$this->assign('process',$process);
 | |
| 	    if($pr == 'Two'){
 | |
| 	    	return $this->fetch('users/security/user_edit_phone');
 | |
| 	    }else{
 | |
| 	    	return $this->fetch('users/security/user_phone');
 | |
| 	    }
 | |
|     }
 | |
|     /**
 | |
|      * 修改手机/获取验证码
 | |
|      */
 | |
|     public function getPhoneVerifyt(){
 | |
|     	$m = new MUsers();
 | |
|     	$data = $m->getById(session('WST_USER.userId'));
 | |
|     	$userPhone = $data['userPhone'];
 | |
|     	$phoneVerify = rand(100000,999999);
 | |
|         $rv = ['status'=>-1,'msg'=>'短信发送失败'];
 | |
|         $tpl = WSTMsgTemplates('PHONE_EDIT');
 | |
|         if( $tpl['tplContent']!='' && $tpl['status']=='1'){
 | |
|             $params = ['tpl'=>$tpl,'params'=>['LOGIN_NAME'=>$data['loginName'],'VERFIY_CODE'=>$phoneVerify,'VERFIY_TIME'=>10]];
 | |
|             $m = new LogSms();
 | |
|             $rv = $m->sendSMS(0,$userPhone,$params,'getPhoneVerifyt',$phoneVerify);
 | |
|         }
 | |
|      	if($rv['status']==1){
 | |
| 	    	$USER = [];
 | |
| 	    	$USER['userPhone'] = $userPhone;
 | |
| 	    	$USER['phoneVerify'] = $phoneVerify;
 | |
| 	    	session('Verify_info2',$USER);
 | |
| 	    	session('Verify_userPhone_Time2',time());
 | |
| 	    	return WSTReturn('短信发送成功!',1);
 | |
|     	}
 | |
|     	return $rv;
 | |
|     }
 | |
|     /**
 | |
|      * 修改手机
 | |
|      */
 | |
|     public function phoneEditt(){
 | |
|     	$phoneVerify = input("post.Checkcode");
 | |
|     	$timeVerify = session('Verify_userPhone_Time2');
 | |
|     	if(!session('Verify_info2.phoneVerify') || time()>floatval($timeVerify)+10*60){
 | |
|     		return WSTReturn("校验码已失效,请重新发送!");
 | |
|     		exit();
 | |
|     	}
 | |
|     	if($phoneVerify==session('Verify_info2.phoneVerify')){
 | |
|     		return WSTReturn("验证成功",1);
 | |
|     	}
 | |
|     	return WSTReturn("校验码不一致,请重新输入!",-1);
 | |
|     }
 | |
|     public function editPhoneSut(){
 | |
|     	$process = 'Two';
 | |
|     	$this->assign('process',$process);
 | |
|     	if(session('Verify_info2.phoneVerify')){
 | |
|     		return $this->fetch('users/security/user_edit_phone');
 | |
|     	}
 | |
|         $this->error('地址已失效,请重新验证身份');
 | |
|     }
 | |
|     /**
 | |
|     * 处理图像裁剪
 | |
|     */
 | |
|     // public function editUserPhoto(){
 | |
|     //     $imageSrc = trim(input('post.photoSrc'),'/');
 | |
|     //     $image = \image\Image::open($imageSrc);
 | |
|     //     $x = (int)input('post.x');
 | |
|     //     $y = (int)input('post.y');
 | |
|     //     $w = (int)input('post.w',150);
 | |
|     //     $h = (int)input('post.h',150);
 | |
|     //     $rs = $image->crop($w, $h, $x, $y, 150, 150)->save($imageSrc);
 | |
|     //     if($rs){
 | |
|     //         return WSTReturn('',1,$imageSrc);
 | |
|     //         exit;
 | |
|     //     }
 | |
|     //     return WSTReturn('发生未知错误.',-1);
 | |
| 
 | |
|     // }
 | |
| 
 | |
|     /**
 | |
|     * 处理图像裁剪 修改适应oss mark 201080612 by zl
 | |
|     */
 | |
|     public function editUserPhoto(){
 | |
|         $imageSrc = trim(input('post.photoSrc'),'/');
 | |
|         //判断图片是否缩放了
 | |
|         $res = strpos($imageSrc,'?x-oss-process=');
 | |
|         $x = (int)input('post.x');
 | |
|         $y = (int)input('post.y');
 | |
|         $w = (int)input('post.w',150);
 | |
|         $h = (int)input('post.h',150);
 | |
|         //判断是否缩放 如果缩放了就不加'?x-oss-process='
 | |
|         if($res){
 | |
|             $imageSrc=$imageSrc.',image/crop,x_'.$x.',y_'.$y.',w_'.$w.',h_'.$h.',image/resize,w_150,h_150';
 | |
|         }else{
 | |
|             $imageSrc=$imageSrc.'?x-oss-process=image/crop,x_'.$x.',y_'.$y.',w_'.$w.',h_'.$h.',image/resize,w_150,h_150';
 | |
|         }
 | |
|         
 | |
|         return WSTReturn('',1,$imageSrc);
 | |
| 
 | |
|     }
 | |
|     /****************************************************** 忘记密码 **********************************************************/
 | |
|     /**
 | |
|      * 忘记支付密码
 | |
|      */
 | |
|     public function backPayPass(){
 | |
|     	$m = new MUsers();
 | |
|     	$userId = (int)session('WST_USER.userId');
 | |
|     	$user = $m->getById($userId);
 | |
|     	$userPhone = $user['userPhone'];
 | |
|     	$user['userPhone'] = WSTStrReplace($user['userPhone'],'*',3);
 | |
|     	$user['phoneType'] = empty($userPhone)?0:1;
 | |
|     	$backType = (int)session('Type_backPaypwd');
 | |
|     	$timeVerify = session('Verify_backPaypwd_Time');
 | |
|     	$process = 'One';
 | |
|     	$this->assign('data', $user);
 | |
|     	$this->assign('process', $process);
 | |
|     	return $this->fetch('users/security/user_edit_pay');
 | |
|     }
 | |
|     /**
 | |
|      * 忘记支付密码:发送短信
 | |
|      */
 | |
|     public function  getphoneverifypay(){
 | |
|     	$m = new MUsers();
 | |
|     	$data = $m->getById(session('WST_USER.userId'));
 | |
|     	$userPhone = $data['userPhone'];
 | |
|     	$phoneVerify = rand(100000,999999);
 | |
|     	$rv = ['status'=>-1,'msg'=>'短信发送失败'];
 | |
|     	$tpl = WSTMsgTemplates('PHONE_FOTGET_PAY');
 | |
|     	if( $tpl['tplContent']!='' && $tpl['status']=='1'){
 | |
|     		$params = ['tpl'=>$tpl,'params'=>['LOGIN_NAME'=>$data['loginName'],'VERFIY_CODE'=>$phoneVerify,'VERFIY_TIME'=>10]];
 | |
|     		$m = new LogSms();
 | |
|     		$rv = $m->sendSMS(0,$userPhone,$params,'getPhoneVerifyt',$phoneVerify);
 | |
|     	}
 | |
|     	if($rv['status']==1){
 | |
|     		$USER = [];
 | |
|     		$USER['userPhone'] = $userPhone;
 | |
|     		$USER['phoneVerify'] = $phoneVerify;
 | |
|     		session('Verify_backPaypwd_info',$USER);
 | |
|     		session('Verify_backPaypwd_Time',time());
 | |
|     		return WSTReturn('短信发送成功!',1);
 | |
|     	}
 | |
|     	return $rv;
 | |
|     }
 | |
|     /**
 | |
|      * 忘记支付密码:验证
 | |
|      */
 | |
|     public function payEditt(){
 | |
|     	$payVerify = input("post.Checkcode");
 | |
|     	$timeVerify = session('Verify_backPaypwd_Time');
 | |
|     	if(!session('Verify_backPaypwd_info.phoneVerify') || time()>floatval($timeVerify)+10*60){
 | |
|     		return WSTReturn("校验码已失效,请重新发送!");
 | |
|     		exit();
 | |
|     	}
 | |
|     	if($payVerify==session('Verify_backPaypwd_info.phoneVerify')){
 | |
|     		return WSTReturn("验证成功",1);
 | |
|     	}
 | |
|     	return WSTReturn("校验码不一致,请重新输入!",-1);
 | |
|     }
 | |
|     public function editPaySut(){
 | |
|     	$process = 'Two';
 | |
|     	$this->assign('process',$process);
 | |
|     	if(session('Verify_backPaypwd_info.phoneVerify')){
 | |
|     		return $this->fetch('users/security/user_edit_pay');
 | |
|     	}
 | |
|     	$this->error('地址已失效,请重新验证身份');
 | |
|     }
 | |
|     /**
 | |
|      * 忘记支付密码:设置
 | |
|      */
 | |
|     public function payEdito(){
 | |
|     	$process = input("post.process");
 | |
|     	$timeVerify = session('Verify_backPaypwd_Time');
 | |
|     	if(!session('Verify_backPaypwd_info.phoneVerify') || time()>floatval($timeVerify)+10*60){
 | |
|     		return WSTReturn("地址已失效,请重新验证身份!");
 | |
|     		exit();
 | |
|     	}
 | |
|     	$m = new MUsers();
 | |
|     	$rs = $m->resetbackPay();
 | |
|     	if($process=='Two'){
 | |
|     		$rs['process'] = $process;
 | |
|     	}else{
 | |
|     		$rs['process'] = '0';
 | |
|     	}
 | |
|     	return $rs;
 | |
|     }
 | |
|     /**
 | |
|      * 忘记支付密码:完成
 | |
|      */
 | |
|     public function editPaySu(){
 | |
|     	$pr = input("get.pr");
 | |
|     	$process = 'Three';
 | |
|     	$this->assign('process',$process);
 | |
|     	if($pr == 'Two'){
 | |
|     		return $this->fetch('users/security/user_edit_pay');
 | |
|     	}else{
 | |
|     		return $this->fetch('users/security/user_pay_pass');
 | |
|     	}
 | |
|     }
 | |
|     /**
 | |
|      * 忘记密码
 | |
|      */
 | |
|     public function forgetPass(){
 | |
|     	return $this->fetch('forget_pass');
 | |
|     }
 | |
|     public function forgetPasst(){
 | |
|     	if(time()<floatval(session('findPass.findTime'))+30*60){
 | |
| 	    	$userId = session('findPass.userId');
 | |
| 	    	$m = new MUsers();
 | |
| 	    	$info = $m->getById($userId);
 | |
| 	    	if($info['userPhone']!='')$info['userPhone'] = WSTStrReplace($info['userPhone'],'*',3);
 | |
| 	    	if($info['userEmail']!='')$info['userEmail'] = WSTStrReplace($info['userEmail'],'*',2,'@');
 | |
| 	    	$this->assign('forgetInfo',$info);
 | |
| 	    	return $this->fetch('forget_pass2');
 | |
|     	}else{
 | |
|     		$this->error('页面已过期!');
 | |
|     	}
 | |
|     }
 | |
|     // 重置密码
 | |
|     public function resetPass(){
 | |
|          if(!session('findPass')){
 | |
|             $this->error('连接已失效!',url('home/users/index'));
 | |
|          }
 | |
|         if(time()>floatval(session('REST_Time'))+30*60)$this->error('连接已失效!');
 | |
|         return $this->fetch('forget_pass3');
 | |
|     }
 | |
|     // 验证校验码
 | |
|     public function forgetPasss(){
 | |
|         if(!session('findPass')){
 | |
|             $this->error('连接已失效!');
 | |
|          }
 | |
|         if(time()>floatval(session('REST_Time'))+30*60)$this->error('连接已失效!');
 | |
|         $USER = session('findPass');
 | |
|         if(empty($USER) && $USER['userId']!=''){
 | |
|             $this->error('请在同一浏览器操作!');
 | |
|         }
 | |
|         $USER = session('findPass');
 | |
|         if(empty($USER) && $USER['userId']!=''){
 | |
|             $this->expire('请在同一浏览器操作!');
 | |
|         }
 | |
|         $uId = session('findPass.userId');
 | |
|         $key = session("findPass.key");
 | |
|         // 验证邮箱中的验证码
 | |
|         $secretCode = input('secretCode');
 | |
|         if($key==$secretCode){
 | |
|             session('REST_userId',$uId);
 | |
|             session('REST_success','1');
 | |
|             return WSTReturn('验证成功',1);
 | |
|         }else{
 | |
|             return WSTReturn('校验码错误',-1);
 | |
|         }
 | |
| 
 | |
|     }
 | |
|     public function forgetPassf(){
 | |
|     	return $this->fetch('forget_pass4');
 | |
|     }
 | |
|     /**
 | |
|      * 找回密码
 | |
|      */
 | |
|     public function findPass(){
 | |
|     	//禁止缓存
 | |
|     	header('Cache-Control:no-cache,must-revalidate');
 | |
|     	header('Pragma:no-cache');
 | |
|     	$code = input("post.verifyCode");
 | |
|     	$step = input("post.step/d");
 | |
|     	switch ($step) {
 | |
|     		case 1:#第一步,验证身份
 | |
|     			if(!WSTVerifyCheck($code)){
 | |
|     				return WSTReturn('验证码错误!',-1);
 | |
|     			}
 | |
|     			$loginName = input("post.loginName");
 | |
|     			$rs = WSTCheckLoginKey($loginName);
 | |
|     			if($rs["status"]==1){
 | |
|     				return WSTReturn("用户名不存在!");
 | |
|     				exit();
 | |
|     			}
 | |
|     			$m = new MUsers();
 | |
|     			$info = $m->checkAndGetLoginInfo($loginName);
 | |
|     			if ($info != false) {
 | |
|     				session('findPass',array('userId'=>$info['userId'],'loginName'=>$loginName,'userPhone'=>$info['userPhone'],'userEmail'=>$info['userEmail'],'loginSecret'=>$info['loginSecret'],'findTime'=>time()));
 | |
|     				return WSTReturn("操作成功",1);
 | |
|     			}else return WSTReturn("用户名不存在!");
 | |
|     			break;
 | |
|     		case 2:#第二步,验证方式
 | |
|     			if (session('findPass.loginName') != null ){
 | |
|     				if(input("post.modes")==1){
 | |
|     					if ( session('findPass.userPhone') == null) {
 | |
|     						return WSTReturn('你没有预留手机号码,请通过邮箱方式找回密码!',-1);
 | |
|     					}
 | |
|     					$phoneVerify = input("post.Checkcode");
 | |
|     					if(!$phoneVerify){
 | |
|     						return WSTReturn('校验码不能为空!',-1);
 | |
|     					}
 | |
|     					return $this->checkfindPhone($phoneVerify);
 | |
|     				}else{
 | |
|     					if (session('findPass.userEmail')==null) {
 | |
|     						return WSTReturn('你没有预留邮箱,请通过手机号码找回密码!',-1);
 | |
|     					}
 | |
|     					if(!WSTVerifyCheck($code)){
 | |
|     						return WSTReturn('验证码错误!',-1);
 | |
|     					}
 | |
|     					return $this->getfindEmail();
 | |
|     				}
 | |
|     			}else $this->error('页面已过期!');
 | |
|     			break;
 | |
|     		case 3:#第三步,设置新密码
 | |
|     			$resetPass = session('REST_success');
 | |
|     			if($resetPass != 1)$this->error("页面已失效!");
 | |
|     			$loginPwd = input("post.loginPwd");
 | |
|     			$repassword = input("post.repassword");
 | |
|     			$decrypt_data = WSTRSA($loginPwd);
 | |
|     			$decrypt_data2 = WSTRSA($repassword);
 | |
|     			if($decrypt_data['status']==1 && $decrypt_data2['status']==1){
 | |
|     				$loginPwd = $decrypt_data['data'];
 | |
|     				$repassword = $decrypt_data2['data'];
 | |
|     			}else{
 | |
|     				return WSTReturn('设置失败');
 | |
|     			}
 | |
|     			if ($loginPwd == $repassword) {
 | |
|     				$m = new MUsers();
 | |
|     				$rs = $m->resetPass();
 | |
|     				if($rs['status']==1){
 | |
|     					return $rs;
 | |
|     				}else{
 | |
|     					return $rs;
 | |
|     				}
 | |
|     			}else return WSTReturn('两次密码不同!',-1);
 | |
|     			break;
 | |
|     		default:
 | |
|     			$this->error('页面已过期!');
 | |
|     			break;
 | |
|     	}
 | |
|     }
 | |
|     /**
 | |
|      * 手机验证码获取
 | |
|      */
 | |
|     public function getfindPhone(){
 | |
|     	session('WST_USER',session('findPass.userId'));
 | |
|         if(session('findPass.userPhone')==''){
 | |
|             return WSTReturn('你没有预留手机号码,请通过邮箱方式找回密码!',-1);
 | |
|         }
 | |
|         $phoneVerify = rand(100000,999999);
 | |
|         session('WST_USER',null);
 | |
|         $rv = ['status'=>-1,'msg'=>'短信发送失败'];
 | |
|         $tpl = WSTMsgTemplates('PHONE_FOTGET');
 | |
|         if( $tpl['tplContent']!='' && $tpl['status']=='1'){
 | |
|             $params = ['tpl'=>$tpl,'params'=>['VERFIY_CODE'=>$phoneVerify,'VERFIY_TIME'=>10]];
 | |
|             $m = new LogSms();
 | |
|             $rv = $m->sendSMS(0,session('findPass.userPhone'),$params,'getPhoneVerify',$phoneVerify);
 | |
|         }
 | |
|         if($rv['status']==1){
 | |
|             // 记录发送短信的时间,用于验证是否过期
 | |
|             session('REST_Time',time());
 | |
|             $USER = [];
 | |
|             $USER['phoneVerify'] = $phoneVerify;
 | |
|             $USER['time'] = time();
 | |
|             session('findPhone',$USER);
 | |
|             return WSTReturn('短信发送成功!',1);
 | |
|         }
 | |
|         return $rv;
 | |
|     }
 | |
|     /**
 | |
|      * 手机验证码检测
 | |
|      * -1 错误,1正确
 | |
|      */
 | |
|     public function checkfindPhone($phoneVerify){
 | |
|     	if(!session('findPhone.phoneVerify') || time()>floatval(session('findPhone.time'))+10*60){
 | |
|             return WSTReturn("校验码已失效,请重新发送!");
 | |
|             exit();
 | |
|         }
 | |
|         if (session('findPhone.phoneVerify') == $phoneVerify ) {
 | |
|             $fuserId = session('findPass.userId');
 | |
|             if(!empty($fuserId)){
 | |
|                 session('REST_userId',$fuserId);
 | |
|                 session('REST_success','1');
 | |
|                 $rs['status'] = 1;
 | |
|                 $rs['url'] = url('home/users/resetPass');
 | |
|                 return $rs;
 | |
|             }
 | |
|             return WSTReturn('无效用户',-1);
 | |
|         }
 | |
|         return WSTReturn('校验码错误!',-1);
 | |
|     }
 | |
|     /**
 | |
|      * 发送验证邮件/找回密码
 | |
|      */
 | |
|     public function getfindEmail(){
 | |
|     	$code = rand(0,999999);
 | |
|         $sendRs = ['status'=>-1,'msg'=>'邮件发送失败'];
 | |
|         $tpl = WSTMsgTemplates('EMAIL_FOTGET');
 | |
|         if( $tpl['tplContent']!='' && $tpl['status']=='1'){
 | |
|             $find = ['${LOGIN_NAME}','${SEND_TIME}','${VERFIY_CODE}','${VERFIY_TIME}'];
 | |
|             $replace = [session('findPass.loginName'),date('Y-m-d H:i:s'),$code,30];
 | |
|             $sendRs = WSTSendMail(session('findPass.userEmail'),'密码重置',str_replace($find,$replace,$tpl['content']));
 | |
|         }
 | |
|         if($sendRs['status']==1){
 | |
|             $uId = session('findPass.userId');
 | |
|             session("findPass.key", $code);
 | |
|             // 发起重置密码的时间;
 | |
|             session('REST_Time',time());
 | |
|             return WSTReturn("发送成功",1);
 | |
|         }else{
 | |
|             return WSTReturn($sendRs['msg'],-1);
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * 加载登录小窗口
 | |
|      */
 | |
|     public function toLoginBox(){
 | |
|     	return $this->fetch('box_login');
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|     * 跳去修改支付密码页
 | |
|     */
 | |
|     public function editPayPass(){
 | |
|         $m = new MUsers();
 | |
|         //获取用户信息
 | |
|         $userId = (int)session('WST_USER.userId');
 | |
|         $data = $m->getById($userId);
 | |
|         $this->assign('data',$data);
 | |
|         return $this->fetch('users/security/user_pay_pass');
 | |
|     }
 | |
|     /**
 | |
|     * 修改支付密码
 | |
|     */
 | |
|     public function payPassEdit(){
 | |
|         $userId = (int)session('WST_USER.userId');
 | |
|         $m = new MUsers();
 | |
|         $rs = $m->editPayPass($userId);
 | |
|         return $rs;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 获取用户金额
 | |
|      */
 | |
|     public function getUserMoney(){
 | |
|         $m = new MUsers();
 | |
|         $rs = $m->getFieldsById((int)session('WST_USER.userId'),'userMoney,lockMoney,rechargeMoney,payPwd');
 | |
|         $rs['isSetPayPwd'] = ($rs['payPwd']=='')?0:1;
 | |
|         $rs['isDraw'] = ((float)WSTConf('CONF.drawCashUserLimit')<=$rs['userMoney'])?1:0;
 | |
|         unset($rs['payPwd']);
 | |
|         return WSTReturn('',1,$rs);
 | |
|     }
 | |
| }
 | |
| 
 |