assign("op", $op);
#檔案名稱(含副檔),變數在head.php
$smarty->assign("WEB", $WEB);
#程式結尾
$smarty->display('theme.html');
#函數
########################################
# op_test
########################################
function op_test()
{
return;
}
########################################
# op_test1
########################################
function op_test1()
{
return;
}
```
2. 流程變數:
使用 $\_SESSION\['uname'\]來判斷是否登入,因為要判斷這個變數,假設它不存在時,則會報錯,所以通常會先定義變數,這裡用三元運算 ```
#定義變數, $_SESSION['uname']用來判斷是否登入
$_SESSION['uname']=isset($_SESSION['uname'])?$_SESSION['uname']:"";
```
在流程控制加上
```
//預設動作
default:
$op="op_list";
if($_SESSION['uname']){
#如果已經登入,則跳轉至後台的首頁
header("location:admin/index.php");
}
break;
```
此時,因為還沒登入,所以程式執行結束,而螢幕是空畫面,接下來做一張表單,資料傳送目的地 admin.php 方法 post
3. 在「templates/default/theme.html」加入表單語法 ```
{* admin.php *}
{if $WEB.file_name == "admin.php"}
{/if}
```
<form action="admin.php" method="post"> 接收表單的程式 admin.php 方法 post
隱藏一個 $\_POST\['op'\] = check\_uname
4. 表單送出後,由admin.php接收,可以用「print\_r($\_POST); die();」觀看接收的變數
在流程加 ```
#登入
case "check_uname":
$msg = check_uname();
if($msg){
#如果帳號、密碼,驗證ok,則跳轉至,後台首頁
$_SESSION['uname'] = true;
header("location:admin/index.php");
exit;
}
//header("location:index.php");
//exit;
//$smarty->assign("msg", "請輸入正確帳號、密碼");
break;
```
```
#函數
########################################
# check_uname
########################################
function check_uname()
{
#過濾接教變數, 特殊字符轉義
$_POST['uname'] = addslashes($_POST['uname']);
$_POST['pass'] = addslashes($_POST['pass']);//
if($_POST['uname'] == "admin" and $_POST['pass'] == "admin123456")return true;
return;
}
```
5. 登出,請檢查後台的登出連結 「 ../admin.php?op=logout 」
在流程增加 logout => $\_SESSION\['uname'\] = ""; 即可
6. 在前台增加一個隱藏的登入點:編輯樣版
樣板位置:web/templates/default/theme.html
編輯「theme.html」將語法放在 </body> 之前
```
{* 登入用 *}
```
{\* 登入用 \*}:smarty 的註解
position:fixed; :固定定位(position: fixed)的元素會相對於瀏覽器視窗來定位,這意味著即便頁面捲動,它還是會固定在相同的位置。
z-index 可以用來設置元素的 Z 方向位置,z-index 數字越大的在越上面,反之則在越下面。
7. 後台要驗證 $\_SESSION\['uname'\],假如不真,則跳回前台頁頁
```
#沒有登入,則回到前台首頁
if(!$_SESSION['uname'])header("location:../index.php");
```