1. 程式人生 > >PHP session and cookie

PHP session and cookie

cookie 和 session 主要不同的是儲存機制。cookie 是一個web頁面到下一個頁面的資料傳輸方法,儲存在客戶端;session 是讓資料在頁面中持續有效的方法,儲存在伺服器端

1.什麼是cookie

Cookie 是在HTTP協議下,通過伺服器或或指令碼語言可以維護客戶瀏覽器上資訊的一種方式,存在與http請求頭中。
cookie 簡單的說,是web伺服器暫時儲存在使用者硬碟上的一個文字檔案。cookie文字檔案命令格式:
使用者名稱@網址[數字].txt

2.建立cookie

在PHP中通過 setcookie() 建立cookie。
cookie 是 HTTP

頭標的組成部分,而投標必須在其他內容傳送以前傳送,因此在 setcookie() 之前不能有任何內容的輸出。

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啟動會話

  1. session_start() 函式
bool session_start(void); // 使用函式之前瀏覽器不能有任何內容的輸出
  1. 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();