iT邦幫忙

2021 iThome 鐵人賽

DAY 28
0
Software Development

PHP 語法通關系列 第 28

Day28 Session 的使用-1

  • 分享至 

  • xImage
  •  

Session的使用方法

  1. Session的操作跟數組的操作時一樣。
  2. 在頁面中如果使用Session,那麼必須在頁面開始處先開啟Session
    • session_start();
  3. 設置或者獲取sessionid,通過函數
    • sessionid();
  4. 添加session
    • $_SESSION['下標'] = 值;
  5. 修改session
    • $_SESSION['下標'] = 新值;
  6. 刪除session
    1. 刪除session的變量值(保留數據類型,不直接用unset)
      • $_SESSION = array();
    2. 刪除所有session信息(包括文件)一般使用於退出操作
        1. 使客戶端COOKIE中的SESSIONID過期。
        1. 清空頁面SESSION的變量值
        1. 摧毀服務器的SESSION文件
  7. 使用session
    • 查看全部SESSION信息
      • var_dump()或者print_r();
    • 使用其中sesssion的某個元素
      • $_SESSION['下標'];

Cookie 與 Session 跨頁面使用,所以需要的時候,要開啟session
二為數組,因為把相同的存在一起,改天有甚麼購物車就又是另外一組

現在我們要來做一點小更改,把純Cookie的操作變為Session操作,怕大家弄混,所以不只會說哪裡做變更,還有整個檔案都會附上

  • login.html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>文檔</title>
</head>
<body>
<form action="login.php" method="post">
用戶名:<input type="text" name="name" id=""><br/>
密碼:
<input type="password" name="pwd" id=""><br/>
<input type="submit" value="登錄">
</form>
</body>
</html>
  • login.php
    這邊變更session_start(); 開啟session,以及創造二維數組$_SESSION['user']['islogin'],把與user有關的存在一起,改天有甚麼購物車就又是另外一組數組。
<?php
	//手動開啟session
	session_start();
    if ($_POST['name'] == 'winnie' && $_POST['pwd'] == 'admin') {
	$_SESSION['user']['islogin'] = true;
	$_SESSION['user']['name'] = $_POST['name'];
	$_SESSION['user']['pwd'] = $_POST['pwd'];
	//var_dump($_COOKIE);
	//登錄成功
	echo '<script>alert("登錄成功");location="./index.php"</script>';
} else {
	//登錄失敗跳轉註冊頁面
}
  • index.php
<?php
	//開啟session
	session_start();
	echo session_id();
	//var_dump($_COOKIE);
	//首頁
	if(isset($_SESSION['user']['islogin']) && $_SESSION['user']['islogin'] ==  true){
		//已經登錄
		echo '親愛的'.$_SESSION['user']['name'].'會員,歡迎您回來<br/>';

		echo '<a href="a.php">去a頁面</a><br/>';
		echo '<a href="b.php">去b頁面</a><br/>';
		echo '<a href="c.php">去c頁面</a><br/>';
	}else{
		//用戶沒有登錄
		echo '對不起,您無權訪問3S後自動跳轉到登錄頁面';
		echo '<meta http-equiv="refresh" content="3;url=./login.html">';
	}
    ```

我們實際跑一次可以看到Session_ID,還有在瀏覽器的Session儲存
![](https://i.imgur.com/CFBXBlX.png)


上一篇
Day27 Cookie 的使用-2
下一篇
Day29 Session 的使用-2
系列文
PHP 語法通關30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
fireflybug
iT邦研究生 4 級 ‧ 2023-09-18 17:55:22

您好 我用ROCKY LINUX + PHP 8,用$SESSION帶值到下個頁面,發現下個頁面是新開一個SID,所以抓不到上個頁面的SID與值,不知道哪邊有改動需要設定?

我要留言

立即登入留言