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

/**使用说明:发送邮件使用phPHPMailer类

1.发送邮件函数
/**----------------------------------------------
* 邮件发送方法
* 使用PHPMailer类
* @param $to 目标
* @param $title 标题
* @param $content 内容
*/
function sendMail($to,$title,$content){
// 引入PHPMailer的类文件
require_once (APP_PATH.'/CodeBase/Org/PHPMailer_v5.1/class.phpmailer.php');
require_once(APP_PATH.'/CodeBase/Org/PHPMailer_v5.1/class.smtp.php');
// 读取常用的配置
$email_from=C('EMAIL_FROM');
$email_from_name=C('EMAIL_FROM_NAME');
$email_uname=C('EMAIL_UNAME');
$email_pwd=C('EMAIL_PWD');
$email_port=C('EMAIL_PORT');
$email_host=C('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="欢迎您注册简繁中国请点击<a herf=$url target='_blank'>激活用户</a>,如果链接失效,请手动访问{$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());
}
}
}

posted @ 2017-08-14 11:33  满月夜  阅读(312)  评论(0编辑  收藏  举报