template_dir = './templates'; $smarty->compile_dir = './templates_c'; //設定本程式使用的子樣版檔名 $subTemplate='form_login.tpl'; //$adminPass 陣列存放管理者帳號與密碼 //格式: $adminPass['帳號']='密碼' $adminPass = array ( 'tony' => 'secret', 'sophia' => '0810', 'joe' => 'flagpw' ); //定義 $errMsg 變數, 用以存放錯誤訊息 $errMsg=''; //定義 $usrMsg 變數, 用以存放一般訊息 $usrMsg=''; //引入 xajax 類別檔並建立物件 require('../xajax_core/xajax.inc.php'); $xajax = new xajax(); //---------------------- AJAX 效果的登入功能 ------------------------ //註冊 xajax 回應函式 chkLogin(), 用來檢查帳號密碼是否相符 $cObj = $xajax->registerFunction('chkLogin'); $cObj->useSingleQuote(); //以 form_login.tpl 子樣版上的 "login" 表單的所有欄位值為參數 $cObj->addParameter(XAJAX_FORM_VALUES,'login'); function chkLogin($form) { global $errMsg, $adminPass; //若使用者在登入表單輸入了帳號密碼 if ( ! empty($form['username']) && ! empty($form['password']) ){ //將帳號密碼設定給 $username 與 $password 變數 $username=$form['username']; $password=$form['password']; //$adminPass[$username] 可以取得 $username 帳號的密碼, 表示 //有這個帳號。如果 $adminPass[$username] 的密碼與使用者輸入 //的相同, 表示密碼正確, 所以開啟管理模式 if ( isset($adminPass[$username]) && $adminPass[$username] == $password ) { //$_SESSION['admin'] 變數代表是否開啟管理模式 $_SESSION['admin'] = TRUE; //$_SESSION['adminUser'] 變數存放管理者名稱 $_SESSION['adminUser'] = $username; } else { $errMsg.='帳號密碼不相符
'; } } $objResponse = new xajaxResponse(); if ( isset($_SESSION['admin']) && $_SESSION['admin'] == TRUE ) { //如果管理模式已經開啟, 表示登入成功, 故將連線轉向至首頁 index.php //xajax 的 redirect() 方法可以將連線轉向 $objResponse->redirect('index.php'); } //顯示錯誤訊息 $objResponse->assign('errMsg', 'innerHTML', $errMsg); return $objResponse; } //處理 AJAX 回應 $xajax->processRequest(); //---------------------- 管理者登出功能 ----------------------------- //管理者按下登出連結時, 會以 GET 的方式傳入 logout 參數等於 1, //所以如果 $_GET['logout'] 等於 1, 表示要登出, 關閉管理模式 if ( $_GET['logout'] == 1 ){ $_SESSION['admin'] = FALSE; $usrMsg.='已經成功登出
'; } //---------------------- 顯示登入表單 ------------------------------- if ( isset($_SESSION['admin']) && $_SESSION['admin'] == TRUE ) { //如果管理模式已經開啟, 表示登入成功, 故將連線轉向至首頁 index.php header("Location: index.php"); } else { //若未開啟管理模式, 便顯示相關訊息與登入表單 $smarty->assign("xajaxJS",$xajax->getJavascript('..')); $smarty->assign('xajaxLoginClick',$cObj->getscript()); $smarty->assign('usrMsg',$usrMsg); $smarty->assign('errMsg',$errMsg); //將子樣版的檔名設定給 subTemplate 樣版變數 $smarty->assign('subTemplate',$subTemplate); $smarty->display('main.tpl'); } ?>