iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 25
0
自我挑戰組

大學 50 萬貸款的交代系列 第 25

Day 25 吃餅乾囉 -2ヽ(✿゚▽゚)ノ

在 Day 24 我們介紹了 Cookie 這種儲存資料的方式,也說了一些 Cookie 的缺點。在 Day 25 我們要介紹改進 Cookie 缺點的儲存資料的方式:Session

Session 是什麼

Session 可以說是伺服器端的 Cookie ,因為 Cookie 儲存在用戶端會被竄改,所以把儲存的資料放在伺服器端就不會被竄改了。

那 Session 是怎麼知道哪筆資料是哪個用戶的呢,以 PHP 的機制來說,還是需要用到用戶端的 Cookie 。只不過 Cookie 名稱固定叫 PHPSESSID,後面帶的值是一個很亂的雜湊,可以避免重複。

PHPSESSID 這個 Cookie 修改了意義也不大,如果修改掉值,伺服器端反而會不認得用戶,會被要求重新操作。所以算是相對可靠的儲存資料方式。

PHP 的 Session 怎麼寫

其實 PHP 的 Session 寫法與 Cookie 沒有差很多,畢竟是差不多性質的東西。我們改寫一下 Day 24 的數數字網頁,讓需要 SAN 值檢測的不只史蒂夫(゚∀゚)

<?php
session_start();
$session_name = "number";
echo '現在數到 ';
if(!isset($_SESSION[$session_name])) {
    echo '0';
	$_SESSION[$session_name] = 0;
} else {
	$_SESSION[$session_name] = $_SESSION[$session_name]+1;
    echo  $_SESSION[$session_name];
}
?>

<form action="test.php" method="post">
	<input type="submit" name="submit" value="+1">
</form>

跟 Day 24 比較一下差異,Session 要使用之前需要先使用 session_start() 這個 Function 。一樣可以使用 isset() 這個 Function 檢查 Session 是否存在。設定值的部分比 Cookie 更直觀,可以直接使用等於來改寫數值。

至於要怎麼清掉 Session ,可以使用 unset($_SESSION[]) 或是 session_destroy() 都可以清掉用戶端 Session 的紀錄。


上一篇
Day 24 吃餅乾囉 ヽ(✿゚▽゚)ノ
下一篇
Day 26 如何優雅又不失禮貌的大啖人肉
系列文
大學 50 萬貸款的交代30

尚未有邦友留言

立即登入留言