![]() |
溫瑞烘老師的教學歷程檔案(Teaching ePortfolio) - 105-1-資料庫程式設計 - 第15週-註冊確認 |
| 第15週-註冊確認第十五週電子郵件確認信 function display_send_page(){ include("class.phpmailer.php"); include("class.smtp.php"); echo "<html><head><title> Email 測試(可以利用前端夾檔方式寄送)</title> <link rel='stylesheet' type='text/css' href='style.css'> </head>"; $cname=trim($_POST["cname"]); $mailto=trim($_POST["mailto"]); $subject=trim($_POST["subject"]); $message=trim($_POST["message"]); $mail= new PHPMailer(); //建立新物件 $mail->IsSMTP(); //設定使用SMTP方式寄信 $mail->SMTPAuth = true; //設定SMTP需要驗證 $mail->SMTPSecure = "ssl"; // Gmail的SMTP主機需要使用SSL連線 $mail->Host = "smtp.gmail.com"; //Gamil的SMTP主機 $mail->Port = 465; //Gamil的SMTP主機的SMTP埠位為465埠。 $mail->CharSet = "utf8"; //設定郵件編碼 $mail->Username = "xxx@gmail.com"; //設定驗證帳號 $mail->Password = "yyyy"; //設定驗證密碼 $mail->From = "xxx@gmail.com"; //設定寄件者信箱 $mail->FromName = $cname; //設定寄件者姓名 $mail->Subject = $subject; //設定郵件標題 $mail->Body = $message; //設定郵件內容 $attach_file=$_FILES["myfile"]["name"]; // 夾檔 if ($attach_file!="") { $target="./ftp/$attach_file"; // 上傳資料夾 if (file_exists($target)) unlink($target); // 以經存在刪除檔案 if (!move_uploaded_file($_FILES["myfile"]["tmp_name"], $target)) { // 上傳 echo "<font color=red> <b>上傳檔案失敗,請檢查後再試</b></font>"; die(); } $mail->AddAttachment($target); // 夾檔 } $mail->IsHTML(true); //設定郵件內容為HTML $mail->AddAddress($mailto,$cname); //設定收件者郵件及名稱 if (!$mail->Send()) { echo "$cname ---- $email ---- 寄信失敗! " . $mail->ErrorInfo; } else { echo "$cname ---- $email ---- 寄信成功!"; } } 參考 : http://cc.cust.edu.tw/~ven/infosend2.php 請將前述程式完成後 送到 ccs.cust.edu.tw/~s10214Dxxx/www/下執行 之後改寫為一個寄信程式, 可以被呼叫 以 GET方式傳送 一、資料表 DROP DATABASE IF EXISTS mydb; CREATE DATABASE mydb DEFAULT CHARACTER SET utf8; USE mydb; CREATE TABLE stmd ( email VARCHAR(40) COMMENT '電子郵件', name VARCHAR(20) COMMENT '姓名', ccode VARCHAR(128) COMMENT '識別碼', valid CHAR(1) COMMENT 'Y-可用', primary key(email) ); 二、程式結構 <?php include "config.php"; $ccode=$_GET["ccode"]; $command=$_POST["command"]; if ($command=="" && ccode=="") { 顯示第一個頁面 display_first_page($conn); } elseif ($command=="註冊") { 顯示註冊頁面 display_register_page($conn); } elseif ($command=="" && ccode<>"") { 顯示確認頁面 display_confirm_page($conn); } ?> 三, 範例程式 <?php include "config.php"; $ccode=$_GET["ccode"]; $email=$_GET["email"]; $command=$_POST["command"]; if ($command=="" && $ccode=="") { display_first_page($conn); } elseif ($command=="註冊") { display_register_page($conn); } elseif ($command=="" && $ccode<>"") { display_confirm_page($conn); } mysqli_close($conn); function display_first_page($conn) { echo "<html><body><center> <font color='red'><h1> 註冊後系統會寄一封確認信至您的信箱,開啟信箱後直接點擊超連結確認成功才能啟用帳號<br> </h1></font><table border=1 bordercolor='black' width=100%> <form method='post' action=''> <tr><td bgcolor='#ccccff'>電子郵件帳號</td> <td><input type='text' name='email' size=50></td></tr> <tr><td bgcolor='#ccccff'>姓名</td> <td><input type='text' name='name' size=50></td></tr></table> <input type='submit' name='command' value='註冊'> </form></center></body></html>"; } function display_register_page($conn) { $email=$_POST["email"]; $name=$_POST["name"]; if ($email=="" || $name=="") { echo "電子郵件與姓名欄不能空白,請回前頁重新輸入"; die(); } // 儲存電子郵件帳號與密碼 $ccode=md5(uniqid(rand())); // 產生唯一的識別碼 $sql="insert into stmd values('$email','$name','$ccode','') on duplicate key update name='$name',ccode='$ccode' "; mysqli_query($conn,$sql); $filename=basename($_SERVER['PHP_SELF']); $message="xxxx君您好<br><br>"; $message.=" 請直接點擊下列超連結來確認此註冊信<br><br>"; $message.="<a href='http://localhost/$filename?ccode=$ccode&email=$email' > http://localhost/$filename?ccode=$ccode&email=$email </a>"; $subject = "註冊確認"; $ok=sendmail($email,$subject,$message); if (!$ok) { echo "系統無法發送確認信至您的Email信箱,請稍候再試"; die(); } echo "系統已經發送一封確認信至您的Email信箱<p>請立即開啟Email進行註冊確認"; } function display_confirm_page($conn) { echo "完成此程式作確認動作, 首先 get email 與 ccode<br> 再由stmd中查詢email並取出ccode與get出來的ccode比較<br> 如果ccode一樣則將valid設為Y表示註冊確認成功"; } ?> 四、由於 localhost無法寄信,必須利用ccs才能寄信, 但ccs上沒有MySQL,因此,將資料庫的部分改成檔案 範例程式 <?php $ccode=$_GET["ccode"]; $mailto=$_GET["mailto"]; $command=$_POST["command"]; if ($command=="" && $ccode=="") { display_first_page(); } elseif ($command=="註冊") { display_register_page(); } elseif ($command=="" && $ccode<>"") { display_confirm_page(); } function display_first_page() { echo "<html><body><center> <font color='red'><h1> 註冊後系統會寄一封確認信至您的信箱,開啟信箱後直接點擊超連結確認成功才能啟用帳號<br> </h1></font><table border=1 bordercolor='black' width=100%> <form method='post' action=''> <tr><td bgcolor='#ccccff'>電子郵件帳號</td> <td><input type='text' name='mailto' size=50></td></tr> <tr><td bgcolor='#ccccff'>姓名</td> <td><input type='text' name='cname' size=50></td></tr></table> <input type='submit' name='command' value='註冊'> </form></center></body></html>"; } function display_register_page() { global $mailto,$ccode,$cname,$subject,$message; $mailto=$_POST["mailto"]; $cname=$_POST["cname"]; if ($mailto=="" || $cname=="") { echo "電子郵件與姓名欄不能空白,請回前頁重新輸入"; die(); } // 儲存電子郵件帳號與密碼 $ccode=md5(uniqid(rand())); // 產生唯一的識別碼 $fp=fopen("test.txt","w"); fputs($fp,$mailto); fputs($fp,"\r\n"); fputs($fp,$ccode); fputs($fp,"\r\n"); fclose($fp); $filename=basename($_SERVER['PHP_SELF']); $message="xxxx君您好<br><br>"; $message.=" 請直接點擊下列超連結來確認此註冊信<br><br>"; $message.="<a href='http://ccs.cust.edu.tw/~s10214Dxxx/$filename?ccode=$ccode&mailto=$mailto' > http://ccs.cust.edu.tw/~s1021Dxxx/$filename?ccode=$ccode&mailto=$mailto </a>"; $subject = "註冊確認"; $ok=display_send_page(); if (!$ok) { echo "系統無法發送確認信至您的Email信箱,請稍候再試"; die(); } echo "系統已經發送一封確認信至您的Email信箱<p>請立即開啟Email進行註冊確認"; } function display_confirm_page() { echo "完成此程式作確認動作, 首先 get email 與 ccode<br> 再由stmd中查詢email並取出ccode與get出來的ccode比較<br> 如果ccode一樣則將valid設為Y表示註冊確認成功"; } function display_send_page(){ global $mailto,$ccode,$cname,$subject,$message; echo "mailto=$mailto<br>"; echo "message=$message<br>"; echo "ccode=$ccode<br>"; echo "cname=$cname<br>"; die(); include("class.phpmailer.php"); include("class.smtp.php"); echo "<html><head><title> Email 測試(可以利用前端夾檔方式寄送)</title> <link rel='stylesheet' type='text/css' href='style.css'> </head>"; $mail= new PHPMailer(); //建立新物件 $mail->IsSMTP(); //設定使用SMTP方式寄信 $mail->SMTPAuth = true; //設定SMTP需要驗證 $mail->SMTPSecure = "ssl"; // Gmail的SMTP主機需要使用SSL連線 $mail->Host = "smtp.gmail.com"; //Gamil的SMTP主機 $mail->Port = 465; //Gamil的SMTP主機的SMTP埠位為465埠。 $mail->CharSet = "utf8"; //設定郵件編碼 $mail->Username = "xxx@gmail.com"; //設定驗證帳號 $mail->Password = "yyy"; //設定驗證密碼 $mail->From = "xxx@gmail.com"; //設定寄件者信箱 $mail->FromName = $cname; //設定寄件者姓名 $mail->Subject = $subject; //設定郵件標題 $mail->Body = $message; //設定郵件內容 $mail->IsHTML(true); //設定郵件內容為HTML $mail->AddAddress($mailto,$cname); //設定收件者郵件及名稱 if (!$mail->Send()) { return false; } else { return true; } } ?>
|
|
中華科技大學數位化學習歷程 - 意見反應 | ![]() |