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