





//寄信
function send_mail($to, $subject, $message, $from)
{
if ($to and $subject and $message) {
$headers = "MIME-Version: 1.0\r\n" .
"Content-type: text/html; charset=utf-8\r\n" .
"From: {$from}\r\n";
mail($to, $subject, $message, $headers);
}
}
其中 $headers 就是告知收信軟體這封信是有支援網頁語法的檔頭。
最後,只要在報名完,順便寄個通知信即可:
//報名
function signup($action_id)
{
global $db;
$uid = $_SESSION['uid'];
$sql = "INSERT INTO `signups` ( `action_id`, `uid`, `signup_date`)
VALUES ('{$action_id}', '{$uid}', NOW())";
if (!$db->query($sql)) {
throw new Exception($db->error);
}
$sql = "SELECT * FROM `actions` where `action_id` ='{$action_id}'";
$result = $db->query($sql);
if (!$result) {
throw new Exception($db->error);
}
$action = $result->fetch_assoc();
$_SESSION['uid_signup'][] = $action_id;
$admin_email = "tad@tn.edu.tw";
$message = "<div>{$_SESSION['name']} 您好:</div><p>您已成功報名「{$action['title']}」活動。</p>";
send_mail($_SESSION['email'], "「{$action['title']}」已報名通知", $message, $admin_email);
send_mail($admin_email, "「{$action['title']}」已報名通知", $message, $admin_email);
}
其中,我們用了 $_SESSION['email'],但實際上此變數不存在,所以,我們在login()登入時順便加個 $_SESSION['email']:
if (password_verify($pass, $data['pass'])) {
$_SESSION['group'] = $data['group'];
$_SESSION['name'] = $data['name'];
$_SESSION['uid'] = $data['uid'];
$_SESSION['email'] = $data['email'];
//抓取該使用者已報名的活動編號
$sql = "SELECT action_id FROM `signups` where `uid`='{$data['uid']}'";
if (!$result2 = $db->query($sql)) {
throw new Exception($db->error);
}
$_SESSION['uid_signup'] = [];
while (list($action_id) = $result2->fetch_row()) {
$_SESSION['uid_signup'][] = $action_id;
}
} else {
throw new Exception("登入失敗!");
}
當然,登出時也記得取消之
//登出
function logout()
{
unset($_SESSION['group']);
unset($_SESSION['name']);
unset($_SESSION['uid']);
unset($_SESSION['uid_signup']);
unset($_SESSION['email']);
}