這一章節要介紹 PHP 的 Session
Session 也可以用來存放資訊,它和 Cookie 最大的不同就在於存放的位置
Session 是存放在伺服器中;而 Cookie 是存放在使用者的電腦中
也因此會將比較隱密的資料存放在 Session 中,比如說使用者登入的資料…等等
因此,Session 也可以用來辨識使用者,當操作需要知道當前是哪位使用者的時候,就可以從 Session 裡面抓取出使用者的資料~
而當瀏覽器關閉的時候,Session 也會消失,這點和 Cookie 是不同的,Cookie 需要使用者自行清除~
或許你會納悶 (可能也沒有~
為何要區分 Session 或 Cookie 呢? 難道不能只用一種就好嗎?
原因在於我們會需要將隱密的資料存放在 Session,比如說用戶登入的時候
但是如果將過多的資料存放在 Session,也就是我們的伺服器的時候,就會加大我們自身的負擔
也因此,我們將比較不隱密的資料放到 Cookie 中,讓使用者的電腦自行吸收
讓我們可以在較少負擔的情況下達到我們的需求
這一章節也會分成 4 個小節來介紹,分別是
- Create
- Retrieve
- Update
- Delete
1. Create
在 PHP 當中若要建立 Session 是非常簡單的
首先需要在所有的 html 標籤之前呼叫 session_start() 函式就可以了
如此一來就可以在當前的頁面中獲得使用 Session 的權利了~
再來在不同的 PHP 版本下要建立 Session 的話,需要使用不同的方式
在 PHP 4 ~ PHP 5.4
需要分別使用以下 3 種 Session 相關的函式,分別是
函式名稱 | 參數 | 介紹 |
---|---|---|
session_register | string name | 註冊特定名稱 Session |
session_unregister | string name | 移除特定名稱 Session |
session_is_registerd | string name | 檢查 Session 是否存在 |
因為版本已經過時了,在這裡就只稍微提到就好,不附上程式碼範例啦~
而其餘 PHP 版本
在前面曾經提過 $_SESSION 這個全域變數
他是用來儲存所有 Session 的變數
在其餘的 PHP 版本當中
我們只需要使用1
$_SESSION['name'] = 'value';
就可以建立一個名為 “name” 的 Session 囉~
2. Retrieve
而取得 Session 的方法也非常簡單,而且在前一小節已經曝露了!!!
因為 $_SESSION 這個全域變數是以陣列的方式在儲存數值
因此若是我們想要取得特定的 Session,也只需要使用如下的程式碼範例1
echo $_SESSION['name'];
就可以啦成功取得名稱為 “name” 的 Session啦~
特別要注意的是
要記得在所有的 html 標籤前面呼叫 session_start() 函式才可以成功使用 session !!!
3. Update
要更新特定 Session 數值的方式也同樣很簡單 XD
只需要將新的數值傳給特定的 Session 即可~
1 | $_SESSION['name'] = 'new value'; |
真的是太方便、太簡單了~~~
4. Delete
最後要說到如何刪除 Session
有 2 種相關函式可以使用
底下會依序介紹
1. session_unset()
當使用 session_unset 函式時,可以選擇是否傳入特定的 Session 名稱
若不傳入的話,則會移除所有存在 Session 裡面的變數
若有指定特定 Session 名稱的話,則只會移除指定的 Session
2. session_destroy()
使用 session_unset 僅僅只是釋放所有存在於 Session 當中的變數而以
Session 這個物件仍然存在
因此我們會需要使用到第 2 個函式,也就是 session_destroy~
它會將 Session 這個物件移除,完全釋放 Session 所占用的空間
一般情況下會將兩者同時使用,如下面範例所示~
1 | session_unset(); |
那麼介紹就到這啦~