Session 一直到 PHP4 之後才有的,PHP3(含)以前幾乎都是使用 Cookie 來記錄一些資訊,然而 Session 的出現,對於 PHP 的安全性有很大的提升,同時也讓網站功能更全面。你要完全拋棄 cookie 嗎?其實也不盡然,如果能夠用 session 搭配 cookie 有的時候可以做出很多更方便的東西。
PHP Session 與 Cookie 的比較
- Session:儲存於伺服器端,不用擔心用戶禁用session的問題,但計錄檔案的負荷由伺服器承擔。
- Cookie:儲存於用戶端,可能有用戶端禁用cookie,但伺服器不需承擔計錄檔案的負荷。
各有優缺點,所以並沒有完全捨棄 cookie 的問題存在,有些不重要的資料其實用 cookie 儲存就可以了,降低一些 server 的負荷;但是重要的資訊,像是用戶的登入帳號等,請用 session 會比較安全。
Session 使用的地方
通常如果你的網站具有會員登入的功能或是購物車的功能,基本上就可以使用到 session 來幫助你記錄這些資訊。另外如果你的會員有權限上的差異(管理員權限、版主權限、一般會員權限 ...... 等),同樣也可以透過 session 來記錄,這個部份就比 cookie 來得安全。
第一步、啟用 Session : session_start()
在你使用 session 來記錄用戶的資訊前,要先用 session_start() 這個函式,告訴系統準備開始使用,請記住 session_start() 一定要放在網頁的最上方還沒有輸出任何東西之前,也就是類似下面這樣,如果前面出現了任何的輸出可是會出錯的唷!這也是一般人常碰到的問題。
開啟程式碼頁面
第二步、給變數值並記錄在伺服器上
我們設定了一個 number 的變數,並給他一個值 =10,接著這個 number=10 就存在伺服器上囉!基本上這樣最簡單的 session 就設定好了。
第三步、取得 session 的值,使用 $_SESSION["變數名稱"];
在取得變數值之前一樣要先用 session_star() 函數唷!接著就可以直接 echo 出來了。
第四步、刪除 session
其實預設伺服器會自動刪除超過有效時間的 session,但有的情況是必須讓用戶操作的時候可以自己刪除,像是會員登出,主動清除後馬上就變成登出狀態,這個時候可以使用以下兩種方式清除:
- unset($_SESSION['變數名稱']);
- session_destroy();
第一種方法是直接給變數名稱,單獨刪除該筆記錄,第二種方法則會將全部的 session 清除。
常用的 Session 函式庫
- session_start:啟用一個新的或開啟正在使用中的session。
- session_destroy:清除正在使用中的 session。
- session_name:取得正在使用中的名稱或將名稱更新為新的名稱。
- session_module_name:取得或更新正在使用中的模組。
- session_save_path:存取目前使用中的 session 路徑。
- session_id:存取目前使用中的 id。
- session_register:註冊一組新的 session。
- session_unregister:刪除一個正在使用中的 session。
- session_is_registered:檢查目前使用中是否已經有此變數。
- session_decode:資料解碼,解碼成功回傳 true。
- session_encode:資料編碼,編碼成功回傳 true。
|