IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> Thinkphp5.1实现发送邮箱验证码 -> 正文阅读

[PHP知识库]Thinkphp5.1实现发送邮箱验证码

这里使用的是 phpmailer/phpmailer 这个类

第一步加载类

?composer install?phpmailer/phpmailer

第二步编写公共方法

/**
 * 邮箱验证码
 * @param string $to 发送到邮箱
 * @param string $name 当前邮箱服务器 
 * @return string $subject 发送标题
 * @return string $body 发送内容
 * @return string $attachment 附件
 */
function send_mail($to, $name, $subject = '', $body = '',$attachment = null) {
    $mail = new \PHPMailer\PHPMailer\PHPMailer();           //实例化PHPMailer对象
    $mail->CharSet = 'UTF-8';           //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
    $mail->IsSMTP();                    // 设定使用SMTP服务
    $mail->SMTPDebug = 0;               // SMTP调试功能 0=关闭 1 = 错误和消息 2 = 消息
    $mail->SMTPAuth = true;             // 启用 SMTP 验证功能
    $mail->SMTPSecure = 'ssl';          // 使用安全协议
    $mail->Host = "smtp.163.com";       // SMTP 服务器
    $mail->Port = 465;                  // SMTP服务器的端口号
    $mail->Username = '你的邮箱@163.com';    // SMTP服务器用户名
    $mail->Password = '你的邮箱密码';     // SMTP服务器密码//这里的密码可以是邮箱登录密码也可以是SMTP服务器密码
    $mail->SetFrom('发件邮箱', 'xxx有限公司');
    $replyEmail = '';                   //留空则为发件人EMAIL
    $replyName = '';                    //回复名称(留空则为发件人名称)
    $mail->AddReplyTo($replyEmail, $replyName);
    $mail->Subject = $subject;
    $mail->MsgHTML($body);
    $mail->AddAddress($to, $name);
    if (is_array($attachment)) { // 添加附件
        foreach ($attachment as $file) {
            is_file($file) && $mail->AddAttachment($file);
        }
    }
    return $mail->Send() ? true : $mail->ErrorInfo;
}

第三步控制器中使用

<?php

namespace app\api\controller;

class Index extends Base {

    /**
     * @description 发送邮箱验证码
     * @api /api/index/getEmailCode
     */
    public function getEmailCode(){
        $subject='xxx有限公司,发送验证码';
        $code = mt_rand(100000,999999);
        $body='您的验证码是:'.$code;
        $to=$this->request->post('email');
        $name="xxx有限公司";
        $r=send_mail($to,$name,$subject,$body,$attachment = null);

        if($r){
            session('emailCode',$code);//记录邮件验证码
            session('emailCodeStartTime',time());//记录验证码发送时间
            $this -> apiSuccess('验证码已发送,有效期60秒');
        }else{
            $this -> apiError('验证码发送失败');
        }
    }

}

这里以邮箱、验证码、密码注册为例,主要实现了验证码60秒过期,注册成功验证码失效功能

以下是用户表的模型方法

<?php
namespace app\admin\model;

use think\Model;

class User extends Model {

    // 注册
    public function register($email,$code,$password){
        $user = $this->where('email',$email)->find();
        if($user) return reMsg(0,'用户已存在');

        // 设置验证码有效期60秒,过期清空
        if(time() > session('emailCodeStartTime') + 60){
            session('emailCode',null);
            return reMsg(0,'验证码过期');//reMsg是自己封装的方法,用于反馈数据库的操作结果
        }

        if($code != session('emailCode')) return reMsg(0,'验证码过期');

        $this->save([
            'email'     => $email,
            'password'  => md5($password)
        ]);
        // 当验证码成功使用,清空验证码
        session('emailCode',null);
        return reMsg(1,'注册成功');
    }

}

欢迎加入PHP学习交流群901759097

?

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-27 15:59:34  更:2021-07-27 16:00:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 1:22:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码