当前位置 : 主页 > 网络编程 > PHP >

用户注册邮箱验证(TP3.X)

来源:互联网 收集:自由互联 发布时间:2021-06-28
用户注册邮箱验证(TP3.X) /**使用说明:发送邮件使用phPHPMailer类1.发送邮件函数// 应用公共文件/**---------------------------------------------- * 邮件发送方法 * 使用PHPMailer类 * @param $to 目标 * @pa
用户注册邮箱验证(TP3.X)
/**使用说明:发送邮件使用phPHPMailer类

1.发送邮件函数
// 应用公共文件
/**----------------------------------------------
 * 邮件发送方法
 * 使用PHPMailer类
 * @param $to 目标
 * @param $title 标题
 * @param $content 内容
 */
function sendMail($to,$title,$content){
//    引入PHPMailer的类文件
    require_once (EXTEND_PATH.'/org/PHPMailer_v5.1/class.phpmailer.php');
    require_once(EXTEND_PATH.'/org/PHPMailer_v5.1/class.smtp.php');
//   读取常用的配置
    $email_from=config('email.EMAIL_FROM');
    $email_from_name=config('email.EMAIL_FROM_NAME');
    $email_uname=config('email.EMAIL_UNAME');
    $email_pwd=config('email.EMAIL_PWD');
    $email_port=config('email.EMAIL_PORT');
    $email_host=config('email.EMAIL_HOST');
    if(empty($email_host)||empty($email_uname)||empty($email_pwd)||empty($email_from)){
        return ['status'=>'error','message'=>'邮箱格式配置不完整'];
    }
//    实例化PHPMailer类
    $mail = new PHPMailer();
    // 设置为要发邮件
    $mail->IsSMTP();
    // 是否允许发送HTML代码做为邮件的内容
    $mail->IsHTML(TRUE);
    $mail->CharSet='UTF-8';
    // 是否需要身份验证
    $mail->SMTPAuth=TRUE;
    /*  邮件服务器上的账号是什么 -> 到163注册一个账号即可 */
    $mail->From=$email_from;
    $mail->FromName=$email_from_name;
    $mail->Host=$email_host;
    $mail->Username=$email_uname;
    $mail->Password=$email_pwd;
    $mail->Port = $email_port;
    // 收件人
    $mail->AddAddress($to);
    // 邮件标题
    $mail->Subject=$title;
    // 邮件内容
    $mail->Body=$content;
    //发送邮件,并返回状态代码
    if($mail->Send()){
        return ['status'=>'success','message'=>'邮件发送成功'];
    }else{
        $emailError=$mail->ErrorInfo;
        return ['status'=>'error','message'=>$emailError];
    }
}

2.模型
//用户添加成功后生产唯一的验证码,存入数据库并发送到注册邮箱
// 插入成功后的回调方法
protected function _after_insert($data, $options)
{
    $where['id']=$data['id'];
//        生成一个唯一的随机数
    $data['email_code']=md5(uniqid());
//       把随机数写入数据库
    $this->where($where)->setField($data);
    $url="http://localhost/oschina/Addons_Project/Addons/index.php/user/regist/emailCheck/uid/".$where['id'].'/ecode/'.$data['email_code'];
    $title="简繁中国用户注册验证";
    $toeamil=$data['user_email'];
    $content="欢迎您注册简繁中国请点击激活用户,如果链接失效,请手动访问{$url}地址进行激活";
    return sendMail($toeamil,$title,$content);
}
3.控制器
    /**
     * 用户注册邮件验证
     比对数据和邮箱的验证值是否一致,一致则改变用户数据库的状态码
     */
    public function emailCheck(){
        $where['id']=I('get.uid');
        $ecode=I('get.ecode');
        $data=$this->_model->lists($where);
        if($ecode==$data[0]['email_code']){
            $change['email_check']=1;
            $change['email_code']='';
            $res=$this->_model->where($where)->setField($change);
            if($res){
                $this->success('用户激活成功','User/User/index');
            }else{
                $this->error('用户激活失败'.$this->_model->getError());
            }
        }
    }
上一篇:git常见命令
下一篇:cronntab 定时器
网友评论