PHP session and cookie
cookie 和 session 主要不同的是儲存機制。cookie 是一個web頁面到下一個頁面的資料傳輸方法,儲存在客戶端;session 是讓資料在頁面中持續有效的方法,儲存在伺服器端
COOKIE
1.什麼是cookie
Cookie 是在HTTP協議下,通過伺服器或或指令碼語言可以維護客戶瀏覽器上資訊的一種方式,存在與http請求頭中。
cookie 簡單的說,是web伺服器暫時儲存在使用者硬碟上的一個文字檔案。cookie文字檔案命令格式:
使用者名稱@網址[數字].txt
2.建立cookie
在PHP中通過 setcookie() 建立cookie。
cookie 是 HTTP
cookie 語法格式如下:
bool cookie( name [,value [,expire [,path [,domain [,secure]]]]])
expire : 有效時間
path : cookie 在伺服器端的有效路徑
domain : cookie 有效域名
secure : cookie 是否僅通過安全的https,1,只在https上有效, 0,預設值都有效
3.讀取Cookie
$_COOKIE[] 超全域性陣列讀取瀏覽器端的Cookie值
4.刪除Cookie
setcookie( "name","",time()-1 ); //值為空,有效期小於當前時間
5.cookie 生命週期
如果不設定失效時間,為會話Cookie,儲存在記憶體中,關閉瀏覽器,Cookie失效。
設定了失效時間,儲存在硬碟中,關閉瀏覽器依然有效,知道有效期超時。
瀏覽器最多允許儲存300個Cookie檔案,每個檔案最大容量為4KB ,每個域名最多支援20個Cookie,達到限制,瀏覽器自動隨機刪除Cookie檔案
SESSION
1.什麼是SESSION
在計算機術語中,session 是指一個終端使用者與互動系統進行通訊的時間間隔,通常指從註冊進入系統到登出退出系統所經過的時間。因此。Session實際上是一個特定的時間概念。
Session 工作原理: 啟動一個session會話時,會生成一個隨機而且唯一的session_id ,也就是session 的檔名,session_id 儲存在伺服器的記憶體中。關閉頁面時 id 自動登出。
2.建立會話
2.1啟動會話
- session_start() 函式
bool session_start(void); // 使用函式之前瀏覽器不能有任何內容的輸出
- session_register()函式
session_register() , 函式需要 php.ini 中將 register_golbals 設定為on ; 使用session_register() 時不需要呼叫session_start(),PHP在建立了變數後隱含的呼叫了session_start()。
2.2 註冊會話
session_start();
$_SESSION['name'] = 'yuzhangsir';
2.3 使用會話
if(!empty($_SESSION['name'])){
$name = $_SESSION['name'];
}
2.4 刪除會話
unset( $_SESSION['name'] ) ; //刪除單個會話,必須加元素,否則一次登出整個$_SESSION 會禁止整個會話功能,沒有辦法恢復,使用者也沒有辦法再註冊
$_SESSION = array(); // 刪除所有的會話變數
session_destroy() ; // 結束當前會話
3.SESSION 設定時間
3.1客戶端沒有禁用Cookie
session_start();
$time = 36800 ;
setcookie( session_name(), session_id(), time()+$time , '/');
$_SESSION['name'] = 'yuzhangsir';
3.2 客戶端禁用了Cookie
1.提醒使用者必須開啟Cookie ;
2. php.ini 中,session.use_trans_sid = 1 , 或者編譯時開啟 -enable-trans-sid 選項;
3. 檔案或者資料中儲存 session_id
4.Session 臨時檔案
在伺服器中,如果將所有使用者的Session 都儲存在臨時目錄中,會降低伺服器的安全性和效率,session_save_path() ,可以設定儲存路徑、
$path = './tmp/';
session_save_path($path);
session_start();