PHP實現郵箱驗證碼驗證功能


*本文將主要說明:PHP實現郵箱驗證碼驗證功能,通過注冊或登錄向用戶發送身份確認驗證碼,並通過判斷輸入的驗證碼是否正確做出登錄判斷。

 


 

實現郵箱驗證碼功能有三個步驟:

1、下載 PHPMailer 組件:https://github.com/PHPMailer/PHPMailer

2、編寫隨機數(驗證碼)函數:

<?php
//生成6位隨機驗證碼
function codestr(){
    $arr=array_merge(range('a','b'),range('A','B'),range('0','9'));
    shuffle($arr);
    $arr=array_flip($arr);
    $arr=array_rand($arr,6);
    $res='';
    foreach ($arr as $v){
        $res.=$v;
}
return $res;
}
?>

 

3、編寫調用核心組件程序:

<?php

//[*郵件發送邏輯處理過程*系統核心配置文件*]


use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

//調用PHPMailer組件,此處是你自己的目錄,需要改寫。
require '../PhpEmail/PHPMailer-master/src/Exception.php';
require '../PhpEmail/PHPMailer-master/src/PHPMailer.php';
require '../PhpEmail/PHPMailer-master/src/SMTP.php';

$mail = new PHPMailer(true);       // Passing `true` enables exceptions
try {
    //服務器配置
    $mail->CharSet ="UTF-8";                     //設定郵件編碼
    $mail->SMTPDebug = 0;                        // 調試模式輸出
    $mail->isSMTP();                             // 使用SMTP
    $mail->Host = '	smtp.qq.com';            // SMTP服務器
    $mail->SMTPAuth = true;                      // 允許 SMTP 認證
    $mail->Username = '**********';              // SMTP 用戶名  即郵箱的用戶名
    $mail->Password = '****************';        // SMTP 密碼  部分郵箱是授權碼(例如163郵箱)
    $mail->SMTPSecure = 'ssl';                    // 允許 TLS 或者ssl協議
    $mail->Port = 465;                            // 服務器端口 25 或者465 具體要看郵箱服務器支持

    $mail->setFrom('*********qq.com', 'Mailer');  //發件人(以QQ郵箱為例)
    
    $mail->addAddress($Email, 'Joe');  // 收件人($Email可以為變量傳值,也可為固定值)
    //$mail->addAddress('ellen@example.com');  // 可添加多個收件人
    $mail->addReplyTo('*********@qq.com', 'info'); //回復的時候回復給哪個郵箱 建議和發件人一致
    //$mail->addCC('cc@example.com');                    //抄送
    //$mail->addBCC('bcc@example.com');                    //密送

    //發送附件
    // $mail->addAttachment('../xy.zip');         // 添加附件
    // $mail->addAttachment('../thumb-1.jpg', 'new.jpg');    // 發送附件並且重命名
    
    $yanzhen = codestr();  //此處為調用隨機驗證碼函數(按照自己實際函數名改寫)

    //Content
    $mail->isHTML(true);                                  // 是否以HTML文檔格式發送  發送后客戶端可直接顯示對應HTML內容
    $mail->Subject = '******身份登錄驗證';
    $mail->Body    = '<h1>歡迎使用******</h1><h3>您的身份驗證碼是:<span>'.$yanzhen.'</span></h3>' . date('Y-m-d H:i:s');
    $mail->AltBody = '歡迎使用********,您的身份驗證碼是:'.$yanzhen . date('Y-m-d H:i:s');

    $mail->send();
    echo '驗證郵件發送成功,請注意查收!';
} catch (Exception $e) {
    echo '郵件發送失敗: ', $mail->ErrorInfo;
}

}

?>

 

完成以上三個步驟即可實現向用戶發送郵箱驗證碼的功能。


 

 

但是,事情並沒有結束,向用戶發送驗證碼成功后,對用戶提交的驗證碼如何判斷輸入的驗證碼是否正確呢?如果正確,達到身份確認效果,否則反之。請看下面實例:

寫實例之前,為了讓大家更加明確程序中的文件名以及變量的作用,我們先規定:

1、將調用核心組件程序 命名為 email.php

2、規定驗證碼存放的變量名為 $yanzhen

3、將 用戶輸入的驗證碼 的post表單值命名為 YanEmail

4、規定使用POST提交表單

5、規定接收POST值的頁面 命名為 yanzhen.php

規定了以上規則后,下面開始實例演示:

首先是用戶輸入頁面:

<!DOCTYPE HTML> 
<html>
<head>
<meta charset="utf-8">
<title>登錄</title>
<style>
.error {color: #FF0000;}
.tip {text-align:center; padding-top:10%}
</style>
</head>
<body> 

<div class="tip">

<h2>郵箱驗證頁面</h2>

<form method="post" action="yanzhen.php"> 
    <span><?php echo $Email;?></span></br>  //此處的$Email為接收用戶的郵箱(這兒看自己需求,可以是數據庫查詢,也可以是手動輸入,只需要最后賦值給$Email即可)
    <span class="error"><?php include 'email.php';?></span>  //此處為導入email.php文件,自動向用戶發送驗證郵箱
    <br><br>
    <input type="text" name="YanEmail" placeholder="請輸入驗證嗎">  //此處為用戶輸入的驗證碼
    <input type="hidden" name="yanzhen" value="<?php echo $yanzhen;?>" >  //此處為系統向用戶發送的驗證碼(注意:這樣寫對系統不安全,按照自己需求更改吧),
    <input type="submit" name="submit" value="驗證">

</form>
</div>

</body>
</html>

  

POST表單接收頁面(yanzhen.php):

<?php

$yan = $_POST["YanEmail"];  //接受用戶輸入的驗證碼
$zhen = $_POST["yanzhen"];  //接受系統發送的驗證碼(注意:此處不安全,需要自己修改)

if ($yan === $zhen) {
    echo '郵箱驗證成功';
    // code...
} else {
    echo '郵箱驗證失敗';
    }

?>

  


 

到這就完成了PHP實現郵箱驗證碼功能的實現。其實沒啥技術含量,就是可能邏輯上需要理清自己想要什么功能。

文章中如有錯誤,請留言指出,個人技術能力有限,希望可以幫到你。

轉載請注明來源!謝謝!!!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM