Session
1. Session放在server,若客戶端關機,則清除記錄。
應用範圍比較安全。
開許多頁面,也算一個session(用chrome 開許多頁面)
(再開firefox又另算一個session)
stores data for one session
(data is lost when the browser tab is closed)
Session


測試session作法
本次測試,用chrome瀏覽器
1.登入後,關掉瀏覽器,
2.再複製link,貼到chrome瀏覽器
登入狀態尚在
測試session作法
本次測試,用chrome瀏覽器
登入後,關掉頁面,並關機,重開,再複製link,
登入狀態不存在
生命週期會因為關機而消失…
1. 利用 PHP 的 session 來做網頁權限的管理。
login.php
login_check.php
index.php
Session
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">
Session
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;
?>
Session
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);
Session
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"] = ""; }
Session
login_check.php
if($valid)
{ $msg = $ss_usercode . ' 你好,歡迎光臨! '; }
else
{ $msg = '登入錯誤'; }
$html = <<< HEREDOC
<html> .... (省略一些html語法)
<p>{$msg}</p>
</body>
</html>
HEREDOC;
echo $html;
?>
Session
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>登入!';
}
Session
index.php
$html = <<< HEREDOC
<html><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登入登出權限控制範例</title>
</head>
<body>
<p>{$msg}</p>
<p>
Session
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>
Session
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;
?>
Session
PHP學習_Class12_20210115_t2
By vanessa168
PHP學習_Class12_20210115_t2
session
- 25