點閱: 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留言板:
FaceBook留言板: