search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

製作一個簡單的信箱驗證 - 躍空團隊-教學BLOG

點閱: 64

文章短網址:https://frees.one/4F

今天的教學是教你如何寫出一個信箱驗證程序

今天會用到的工具是PHPMailer的寄信功能

先準備一個可以跑php與MYSQL的虛擬主機或是VPS

(如沒有需要購買請到上方選單中的商城裡面訂購)

今天的教學開始~~

這個教學會利用到之前教學的亂數生成與gmail api發信

還沒有讀過亂數生成的可以點擊這裡去學習一下

還沒有讀過gmail api發信的可以點擊這裡去學習一下

我們先建立一個MYSQL資料庫(不會建立請查閱文章分類-CPANEL教學),在SQL中輸入

//建立表
CREATE TABLE `mail` (
  `id` int(11) NOT NULL,
  `mail` text COLLATE utf8_unicode_ci NOT NULL,
  `v` text COLLATE utf8_unicode_ci,
  `ok` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
//設定id
ALTER TABLE `mail`
  ADD PRIMARY KEY (`id`);
ALTER TABLE `mail`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;

我們資料表建立好了現在要來建立config.php資料庫連線與gmail api發信文件

query("SET NAMES utf8"); //指定連線編碼
$mailoauthUserEmail = "XXX";//你的GMAIL帳號
$mailoauthClientId = "XXX";//用戶端 ID
$mailoauthClientSecret = "XXX";//用戶端密鑰
$mailoauthRefreshToken = "XXX";//refresh token
?>

我們資料庫連線與gmail api發信用的文件已經寫好了
現在要來寫HTML讓訪客輸入信箱的頁面

我們簡單做就不再設計外觀了~~~



信箱驗證






 電子信箱:
 

我們現在要來做表單的接收文件名稱設定echo.php(記得修改文件內的網址)

請先下載


;{}[]23456789';//隨機抽取的字
    $len = strlen($word);//取得字長

    for ($i = 0; $i < $password_len; $i++) {//判斷生成字數
        $password .= $word[rand() % $len];//隨機抽取字
    }

    return $password;//輸出生成的字
}
$passwd = generatorPassword();//參數
//我們現在要進行資料庫內容寫入
//MYSQL的指令我們現在要在mail這張表中建立新內容
//我們剛剛建立的表中有四個欄位為id,mail,v,ok
//這四個都有用途
//id為自動排序生成,所以我們不需要寫在命令中
//mail為儲存表單發送過來的內容
//v為驗證碼,因為我們寫的程式是用網址做驗證所以要讓他生成一組亂碼
//ok為判斷是否驗證成功0是未驗證1是已驗證
$sql = "INSERT INTO `mail` (mail, v, ok) VALUES (?, ?, ?, ?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param($mail,$passwd,"0");
$stmt->execute();
//建立發信
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->AuthType = 'XOAUTH2';
$email = $mailoauthUserEmail;
$clientId = $mailoauthClientId;
$clientSecret = $mailoauthClientSecret;
$refreshToken = $mailoauthRefreshToken;
$provider = new Google(
    [
        'clientId' => $clientId,
        'clientSecret' => $clientSecret,
    ]
);
$mail->setOAuth(
    new OAuth(
        [
            'provider' => $provider,
            'clientId' => $clientId,
            'clientSecret' => $clientSecret,
            'refreshToken' => $refreshToken,
            'userName' => $email,
        ]
    )
);
$mail->setFrom($email, $email);
$mail->addAddress($mail);
$mail->Subject = '信件驗證';//信件標題
$mail->CharSet = 'utf-8';
$mail->AltBody = '你好這是信件驗證
驗證網址:點擊驗證http://xxx.xxx/v.php?v='.$passwd.'';//信件內容,請自行替換網址 if (!$mail->send()) { echo "發信錯誤: " . $mail->ErrorInfo; } else { echo "驗證信件已寄送!"; }?>

我們已經完成了80%左右了,現在要建立v.php的驗證文件

prepare($sql);
$stmt->bind_param('1',$v);
$stmt->execute();
echo '已驗證';
?>

去資料庫看看是不是ok欄位已經變成1了八~~

懶得自己一個個用可以到本網站商店購買範本檔https://frees.tw/product/mail

如有興趣閱讀其他文章歡迎在選單中的最新文章閱讀喔~~

FaceBook留言板:


熱門推薦

本文由 freestw 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦