5-6
檢查帳號密碼
一、引入設定檔
- include() 和 require() 都可以用來引入檔案,但原理不太一樣。
- require() :若引入不到檔案,會導致程式停擺。
- include():若引入不到檔案,僅秀出警告,程式仍繼續運作。
- require_once() 與 include_once() :引入進來的檔案若是相同的,只會引入一次。推薦使用!
- () 不一定要寫,寫成include "xxx.php"; 也可以。
二、判斷是否登入
- 為了讓系統記住登入狀態,我們使用了session,要使用session機制,必須先session_start();
<?php
/*引入檔案(初始設定)*/
session_start();
require_once 'config.php';
require_once 'smarty/libs/Smarty.class.php';
$smarty = new Smarty;
/*過濾變數*/
$op = isset($_REQUEST['op']) ? filter_var($_REQUEST['op'], FILTER_SANITIZE_SPECIAL_CHARS) : "";
$group = isset($_SESSION['group']) ? $_SESSION['group'] : '';
$name = isset($_SESSION['name']) ? $_SESSION['name'] : '訪客';
$content = "主內容";
/*執行流程*/
switch ($op) {
case 'login':
$name = isset($_POST['email']) ? filter_var($_POST['email'], FILTER_SANITIZE_SPECIAL_CHARS) : "訪客";
$pass = isset($_POST['pass']) ? $_POST['pass'] : "";
if ($name == $admin_id and $admin_pass == $passwd) {
$_SESSION['group'] = 'admin';
$_SESSION['name'] = $name;
$content = "登入成功";
} else {
$content = "登入失敗";
}
header("location:{$_SERVER['PHP_SELF']}");
exit;
default:
# 取得活動列表
break;
}
/*輸出結果*/
$smarty->assign('name', $name);
$smarty->assign('group', $group);
$smarty->assign('content', $content);
$smarty->assign('page_title', '活動報名系統');
$smarty->display('index.tpl');
- 整理一下變數,把到時後要傳到樣板的放在上面即可,相當於預設值的感覺。
- 利用 switch 來判斷 $op 變數,隨著 $op 變數值不同,其對應動作也不一樣。登入時就跑login中的部份。
- 利用require_once()引入設定檔。
- 登入時會傳來 name 與 passwd,過濾帳號(因為最後要呈現到畫面上),密碼無須過濾。
- 過濾後,判斷和設定檔的帳密是否一致,若一致,就用$_SESSION['group']記住狀態。順便把名字也記住。
- 其中「==」是比較運算符,「=」則是賦值運算符。
- header() 也是PHP內建的函數,用來設定檔案檔頭。
- header("location: 網址") 的用法則是轉頁(轉向)的語法,但一樣會往下執行,所以,必須用 exit 告知程式到此為止,不再往下執行(因為要轉向了)。
- $content 理論上看不到,不過若是把轉向暫時註解,就可以看到登入成功或失敗。