iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0
Software Development

PHP 語法通關系列 第 29

Day29 Session 的使用-2

因為開啟Session,所以原本abc頁面的驗證是用Cookie,現在要更改為驗證Session存在是否。
PS.只要用到Session,都需要session_start();

  • a.php
<?php
	session_start();
	//獲取sessionid
	echo session_id();
	if(isset($_SESSION['user']['islogin']) && $_SESSION['user']['islogin'] ==  true){
		//已經登錄
		echo '親愛的'.$_SESSION['user']['name'].'會員,歡迎您回來<br/>';
		echo '這是a頁面<br/>';
		echo '<a href="index.php">去首頁</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">';
	}
  • b.php
<?php
	session_start();
	echo session_id();
	if(isset($_SESSION['user']['islogin']) && $_SESSION['user']['islogin'] ==  true){
		//已經登錄
		echo '親愛的'.$_SESSION['user']['name'].'會員,歡迎您回來<br/>';
		echo '當前是b頁面<br/>';
		echo '<a href="index.php">去首頁</a><br/>';
		echo '<a href="a.php">去a頁面</a><br/>';
		echo '<a href="c.php">去c頁面</a><br/>';
	}else{
		//用戶沒有登錄
		echo '對不起,您無權訪問3S後自動跳轉到登錄頁面';
		echo '<meta http-equiv="refresh" content="3;url=./login.html">';
	}
  • c.php
<?php
	session_start();
	echo session_id();
	if(isset($_SESSION['user']['islogin']) && $_SESSION['user']['islogin'] ==  true){
		//已經登錄
		echo '親愛的'.$_SESSION['user']['name'].'會員,歡迎您回來<br/>';
		echo '當前是c頁面<br/>';
		echo '<a href="index.php">去首頁</a><br/>';
		echo '<a href="a.php">去a頁面</a><br/>';
		echo '<a href="b.php">去b頁面</a><br/>';
		echo '<a href="logout.php">退出登錄</a>';
	}else{
		//用戶沒有登錄
		echo '對不起,您無權訪問3S後自動跳轉到登錄頁面';
		echo '<meta http-equiv="refresh" content="3;url=./login.html">';
	}
  • logout.php
<?php
//退出登錄操作  原本只有cookie的時候
// setcookie('islogin',null,time()-1,'/');
// setcookie('name',null,time()-1,'/');


//現在
session_start();
//1.清除當前session數組中的值
$_SESSION['user'] = array(); //設置空數組=清空裡面的值
//獲取session的名稱
//echo session_name();exit;
//2.讓sessionid失效
setcookie(session_name(), null, time() - 1, '/');
//刪除session文件
session_destroy();

echo '<script>alert("已退出");location="./login.html"</script>';

Session的配置文件相關選項

php.ini檔案打開有Session配置的資訊

簡述一下

  • session.save_handler = files 設定session文件的存儲方式
  • session.save_path="C:\xampp\tmp" session文件保存的路徑
  • session.use_cookies = 1 設定是否使用cookie來存儲session的id
  • session.use_only_cookies = 1 設定SESSION是否只用cookie
  • session.name = PHPSESSID session名稱
  • session.auto_start = 0 設置是否自動開啟session
  • session.cookie_lifetime = 0 設定session使用cookie的有效生存時間,0 表示關閉瀏覽器前有效
  • session.cookie_path = / 設置session使用cookie的有效路徑
  • session.cookie_domain = 設置SESSION使用cookie的有效域名 (空 表示當前域名有效)
  • session.cookie_httponly = 設置session使用cookie是否指允許使用http協議
  • session.serialize_handler = php session串行化的方式
  • session.gc_probability = 1 垃圾回收機制的除數
  • session.gc_divisor = 1000 垃圾回收機制的被除數
    例如我們有1000個會員登入,那就會引發這個機制。
  • session.gc_maxlifetime = 1440 session垃圾回收的最大時間。
  • session.use_trans_sid = 0 session是否使用傳輸方式傳session的id
  • session.trans_sid_tags = "a=href,area=href,frame=src,form=" session可以傳輸id的方式

上一篇
Day28 Session 的使用-1
下一篇
Day30 來點不一樣的Cookie與Session && 完賽心得
系列文
PHP 語法通關30

尚未有邦友留言

立即登入留言