template_dir = "./templates";
$smarty->compile_dir = "./templates_c";
//定義 $errMsg 變數, 用以存放錯誤訊息
$errMsg='';
//定義 $usrMsg 變數, 用以存放一般訊息
$usrMsg='';
//---------------------- 取得表單的 op 與 id 參數供之後使用 ---------
//檢查是否有 POST 或是 GET 傳來的 op 參數, 若有, 則指定給 $op 變數
if ( ! empty($_POST['op']) ){
$op=myStripslashes($_POST['op']);
}
elseif ( ! empty($_GET['op']) ) {
$op=myStripslashes($_GET['op']);
}
//檢查是否有 POST 或是 GET 傳來的 id 參數, 若有, 則指定給 $id 變數
if ( ! empty($_POST['id']) ){
$id=myStripslashes($_POST['id']);
}
elseif ( ! empty($_GET['id']) ) {
$id=myStripslashes($_GET['id']);
}
//---------------------- 執行的刪除、編輯、新增動作 -----------------
if ( ($op=='del' || $op=='edit') && $_SESSION['admin'] != TRUE) {
//如果不是在管理模式, 便不允許執行刪除或是編輯的動作
$errMsg.='您不是管理員, 或者登入閒置時間過久, 請重新登入。
';
}
else {
switch($op) {
//刪除留言
case 'del':
//刪除 $id 變數指定編號的留言
$id=mysql_real_escape_string($id);
$result=mysql_query("DELETE FROM $tbGuestbook
WHERE `留言編號` = $id" );
if (mysql_affected_rows() > 0){
$usrMsg.="已經成功刪除編號為 $id 的留言
";
//刪除留言後, 留言總數便會改變, 所以刪除存放留言總數的變數,
//下次重新取得留言總數
unset($_SESSION['totalRows']);
}
else {
$errMsg.='無法刪除留言
';
}
break;
//編輯留言
case 'edit':
//checkField() 會檢查留言表單的姓名與留言欄位是否都已輸入
if ( checkField() ){
//若姓名與留言欄位都檢查無誤, 便將姓名、留言、
//目前的日期時間寫入資料庫
$sql=sprintf("UPDATE $tbGuestbook
SET `留言` = '%s'
WHERE `留言編號` = %d",
mysql_real_escape_string($message),
mysql_real_escape_string($id) );
$result=mysql_query($sql);
if (mysql_affected_rows() > 0){
$usrMsg.="已經成功編輯編號為 $id 的留言
";
}
else {
$errMsg.='無法編輯留言
';
}
}
break;
//新增留言
case 'add':
if ($_SESSION['admin'] != TRUE &&
$_SESSION['captchaText'] != $_POST['captcha'] ){
$errMsg.='圖形驗證字串錯誤
';
}
elseif ( checkField() ){
//checkField() 會檢查留言表單的姓名與留言欄位是否都已輸入,
//若姓名與留言欄位都檢查無誤, 便可將新留言寫入資料庫
//設定使用台北時區
date_default_timezone_set('Asia/Taipei');
//將姓名、留言、目前的日期時間寫入資料庫
$sql=sprintf("INSERT $tbGuestbook (`姓名`, `留言`, `日期時間`)
VALUES ('%s', '%s', '%s')",
mysql_real_escape_string($name),
mysql_real_escape_string($message),
date("Y-m-d H:i:s") );
$result=mysql_query($sql);
if (mysql_affected_rows() > 0){
$usrMsg.='已經成功新增一筆留言
';
//新增留言後, 留言總數便會改變, 所以刪除存放留言總數的變數,
//下次重新取得留言總數
unset($_SESSION['totalRows']);
//刪除存放圖形驗證字串的變數, 讓下次重新產生新的圖形驗證字串
unset($_SESSION['captchaText']);
}
else {
$errMsg.='無法新增留言
';
}
}
//刪除存放圖形驗證字串的變數, 讓下次重新產生新的圖形驗證字串
unset($_SESSION['captchaText']);
break;
default:
$errMsg.="無法找到名為 $op 的操作
";
}
}
//---------------------- 顯示相關訊息--------------------------------
//將一般訊息與錯誤訊息指定給樣版變數
$smarty->assign('usrMsg',$usrMsg);
$smarty->assign('errMsg',$errMsg);
$smarty->assign('showLoginForm',FALSE);
$smarty->display('basic.tpl');
//---------------------- 定義 myStripslashes() 函式 -----------------
//myStripslashes() 可刪除 magic_quotes_gpc 功能自動加上的反斜線
function myStripslashes($value){
if (get_magic_quotes_gpc())
$value = stripslashes($value);
return $value;
}
//---------------------- 定義 checkField() 函式 ---------------------
//檢查新增與編輯留言的表單各欄位是否都有輸入
function checkField(){
//使用 global 定義全域變數 (請參考 5-1 節)
global $name, $message, $errMsg;
$checkResult=TRUE;
//檢查是否已輸入姓名
if ( ! empty($_POST['name']) ) {
//自訂的 myStripslashes() 可以過濾括號與反斜線 (本節不列出與說明
//此函式, 相關說明請參見 5-5 節)
//將姓名過濾後, 放入 $name 變數
$name=myStripslashes($_POST['name']);
} else {
//若否, 則將錯誤訊息寫入 $errMsg 變數
$errMsg.='您忘記輸入姓名
';
$checkResult=FALSE;
}
//檢查是否已輸入留言
if ( ! empty($_POST['message']) ) {
//將留言放入 $message 變數
$message=myStripslashes($_POST['message']);
} else {
//若否, 則將錯誤訊息寫入 $errMsg 變數
$errMsg.='您忘記輸入留言
';
$checkResult=FALSE;
}
return $checkResult;
}
?>