1. Session放在server,若客戶端關機,則清除記錄。
應用範圍比較安全。
開許多頁面,也算一個session(用chrome 開許多頁面)
(再開firefox又另算一個session)
stores data for one session
(data is lost when the browser tab is closed)
測試session作法
本次測試,用chrome瀏覽器
1.登入後,關掉瀏覽器,
2.再複製link,貼到chrome瀏覽器
登入狀態尚在
測試session作法
本次測試,用chrome瀏覽器
登入後,關掉頁面,並關機,重開,再複製link,
登入狀態不存在
1. 利用 PHP 的 session 來做網頁權限的管理。
login.php
login_check.php
index.php
login.php
<?php
$html = <<< HEREDOC
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登入登出權限控制範例</title>
</head>
<body>
<h1>登入</h1>
<form name="form1" method="post" action="login_check.php">
帳號:<input type="text" name="usercode" size="10"><br>
密碼:<input type="password" name="password" size="10">
login.php
用戶類型
<br><input type="radio" name="usertype" value="MEMBER">會員
<br><input type="radio" name="usertype" value="ADMIN">系統管理者
<p>
<input type="submit" value="登入">
</form>
</body>
</html>
HEREDOC;
echo $html;
?>
login_check.php
<?php
session_start();
$ss_usertype = isset($_POST["usertype"]) ? $_POST["usertype"] : "";
$ss_usercode = isset($_POST["usercode"]) ? $_POST["usercode"] : "";
$ss_password = isset($_POST["password"]) ? $_POST["password"] : "";
// 可自行定義存檔的格式
$file_password = "user_password.txt"; // 存帳號及密碼的文字檔
$a_chk_list = file($file_password);
login_check.php
// 會員檢查,注意格式
$chk_string = "!" . $ss_usercode . "#" . md5($ss_password) . "@" . $ss_usertype;
$chk_string .= "\n"; // window enter之意
$valid = false;
if(in_array($chk_string, $a_chk_list))
{ $valid = true;
$_SESSION["usertype"] = $ss_usertype;
$_SESSION["usercode"] = $ss_usercode; }
else
{ $_SESSION["usertype"] = "";
$_SESSION["usercode"] = ""; }
login_check.php
if($valid)
{ $msg = $ss_usercode . ' 你好,歡迎光臨! '; }
else
{ $msg = '登入錯誤'; }
$html = <<< HEREDOC
<html> .... (省略一些html語法)
<p>{$msg}</p>
</body>
</html>
HEREDOC;
echo $html;
?>
index.php
<?php
session_start();
$ss_usertype = isset($_SESSION["usertype"]) ? $_SESSION["usertype"] : "";
$ss_usercode = isset($_SESSION["usercode"]) ? $_SESSION["usercode"] : "";
switch($ss_usertype)
{ case "ADMIN" :
case "MEMBER" :
$msg = '<font color="#FF0000">Hi,' . $ss_usercode . ' 您好,</font>';
break;
default:
$msg = '你尚未登入系統,請<a href="login.php">按這裡</a>登入!';
}
index.php
$html = <<< HEREDOC
<html><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登入登出權限控制範例</title>
</head>
<body>
<p>{$msg}</p>
<p>
index.php
主功能表如下
<br><a href="page_a.php">page_a</a>---任何人均可觀看之網頁
<br><a href="page_b.php">page_b</a>---只有會員可用之網頁
<br><a href="page_c.php">page_c</a>---系統管理者可用之網頁
<br>
<br><a href="page_d.php">page_d</a>---系統管理者及會員均可用之網頁
</p>
<hr>
<p>
測試網頁
<br><a href="login.php">重新登入</a>
<br><a href="logout.php">登出</a>
index.php
</p>
<p>管理者使用功能
<br><a href="view_session.php">查看session變數</a>
<br><a href="user_input.php">新增使用者帳號</a>
<br><a href="user_list.php">查看所有使用者帳號</a>
</P>
</body>
</html>
HEREDOC;
echo $html;
?>