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; } ?>