PHP Session 與 Cookie 的比較
- Session:儲存於伺服器端,不用擔心用戶禁用session的問題,但計錄檔案的負荷由伺服器承擔。
- Cookie:儲存於用戶端,可能有用戶端禁用cookie,但伺服器不需承擔計錄檔案的負荷。
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_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。