基于ThinkPHP3.2的邮箱激活

时间:2022-09-24 14:54:15

第一步:下载PHPMailer安装包 解压后把PHPMailer文件夹在ThinkPHP\Library\Vendor下

第二步: APP\Common\Common 下建一个function.php公共函数库

function.php代码如下:

<?php

//定义一个mail发送函数

function sendMail($address,$title,$message){
//导入mail类文件
vendor('PHPMailer.class#phpmailer'); //Thinkphp的导入方式,放在/ThinkPHP/Extend/Vendor/
//创建mail对象
$mail = new PHPMailer();

$mail->IsSMTP(); //设置使用SMTP服务器发送
$mail->Host = "smtp.163.com"; //设置163邮箱服务
$mail->SMTPAuth = true; // 设置需要验证
$mail->Username = "wp6418@163.com"; // 发件人使用邮箱
$mail->Password = "****"; // 设置发件人密码
$mail->From = "wp6418@163.com";// 发件人邮箱
$mail->FromName = "王盼"; //发送者名称
$mail->AddAddress($address); // 添加发送地址
$mail->IsHTML(true); //指定支持html格式
$mail->CharSet="UTF-8";
$mail->Subject = $title;
$mail->Body = $message;
if($mail->Send()){
return true;
}else{
return false;
}
}

本来想把对应的参数写在配置文件中,但是tp3.2是先加载公共函数库然后在加载配置文件的额。

三、如果是注册 在RegisterController.class.php

public function register(){
$m = M("Users");
$email = $_POST["email"];
$userpass = md5($_POST['userpass']);
$_POST["password"] = $userpass;
$addtime = time();
$_POST["addtime"] = time();
$_POST["status"] = 0;
$_POST["info"] = md5(time()).time(); //随意定义一个激活账号使用码。
$info = md5(time()).time();
if(!$m->create()){
$this->error($m->getError());
}
if($m->add()){
$message=<<<str
你好!{$email}
<h2>欢迎注册本网站</h2>
激活账号请点击如下地址:<br/><br/>
<a href="http://localhost/PHPMail/index.php/Home/Info/check/mail/{$email}/info/{$info}">
http://localhost/PHPMail/index.php/Home/Info/check/mail/{$email}/info/{$info}</a>
<br/><br/>
www.***.com
str;
sendMail("{$email}","激活账号",$message);
$this->success("注册成功!",U('Info/index'));
}else{
$this->error("注册失败!原因:".$m->getError());
}
}

第四步 验证激活,此时邮箱已经收到验证码 只需直接访问就行了 InfoController控制器下

public function check(){
$email = $_GET["mail"];
$m = M("Users");
$data["status"]=1;
$d = $m->where("email='{$email}'")->save($data);
if($d){
$this->display("info"); //显示激活信息
}
}

第五步 进行登录

public function login(){ 
$m = M("Users");
$email = $_POST['email'];
$userpass = $_POST['userpass'];
$user = $m->where("email='{$email}'")->select(); //判断账号是否存在
if($user){
//判断密码是否正确
if($user[0]['password']==md5($userpass)){
//是否已被激活
if($user[0]['status']==1){
//echo "登陆成功!";
$_SESSION["email"]=$user[0]['email'];
//将账号信息放入session中
$this->success("登录成功!",U("Index/index"));
}else{
$this->error("登录失败!");
}
}
}
}