极致CMS邮件发送(验证码)

星空的小太阳 发布于:2021-11-23 08:38:24

极致CMS中邮件发送验证码的方式:


JS

注:这里的路径指的是Msgcontroller.php中的fsyzm(),传入的参数是<input type="email">中的value,也就是邮箱地址。

$.post('/msg/fsyzm',{email:email},function(r){
	alert(r.msg)
	console.log('结果:',r)
},'json');


php

发送邮件验证码

function fsyzm(){
	    $email = $this->frparam('email',1);
		
	    $code = rand(100000,999999);//生成验证码
	    $_SESSION['email_code'] = $code; 
			
	    $user = M('member')->find(['email'=>$email]);
	    if($user){
		  //生成随机秘钥
		  $w['logintime'] = time();
		  $w['token'] = getRandChar(32);
		  M('member')->update(['id'=>$user['id']],$w);
		  //发送邮件
		  if($this->webconf['email_server'] && $this->webconf['email_port'] &&  $this->webconf['send_email'] &&  $this->webconf['send_pass']){
			$title = '找回密码-'.$this->webconf['web_name'];
			$body = '您的账号正在进行找回密码操作,如果确定是本人操作,请在1分钟内输入'.$code.'验证码,过期失效!';
			
			send_mail($this->webconf['send_email'],$this->webconf['send_pass'],$this->webconf['send_name'],$user['email'],$title,$body);
			if(!isset($_SESSION['forget_time'])){
				$_SESSION['forget_time'] = time();
				$_SESSION['forget_num'] = 0;
			}
			
			if(($_SESSION['forget_time']+10*60)<time()){
				$_SESSION['forget_num'] = 0;
				$_SESSION['forget_time'] = time();
			}
			$_SESSION['forget_num']++;
			if($_SESSION['forget_num']>5 && ($_SESSION['forget_time']+10*60)>time()){
				//$this->error('您操作过于频繁,请10分钟后再尝试!');
				if($this->frparam('ajax')){
					JsonReturn(['code'=>0,'msg'=>'您操作过于频繁,请10分钟后再尝试!']);
				}
				Error('您操作过于频繁,请10分钟后再尝试!');
			}

			Success('找回密码邮件已发送,请到您的邮箱查看!',get_domain());

		 }else{
			 Error('邮箱服务器未配置,无法发送邮件,请联系管理员找回密码!');
		 }
					  
		}else{
			Error('输入的信息有误!');
		}
	}


CMS系统配置

注:如需其文件,路径:/A/t/tpl/sys.html

觉得有用请点个赞吧!
1 558