HTTP是無狀態協議,沒有內建機制維護兩個事物之間的狀態,同一個用戶在請求同一個頁面兩次的時候,HTTP協議不會認爲這兩次請求都認爲是同一用戶的請求,會當作兩次請求的獨立。會把兩次請求隔離開,會認爲兩次請求是不一樣的兩我的進行請求或訪問。若是用戶進行了登陸操做,再次請求頁面,HTTP協議不會認爲該用戶以前進行過登陸,沒有辦法保持以前的用戶登陸狀態,因此不能再不一樣頁面之間進行用戶登陸操做的跟蹤狀態和會話的保持。mysql
會話控制就是爲了解決跟蹤同一用戶的狀態。容許服務器跟蹤同一客戶端作出的連續請求。保持用戶的狀態,從而保持用戶的登陸狀態。redis
GET參數進行傳遞 信息不安全,參數丟失sql
cookie 是一種由服務器發送給客戶端的片斷信息,存儲在客戶端瀏覽器的內存或硬盤當中的技術。瀏覽器
setcookie(key,value,expire,path,domain,sercure);安全
$_COOKIE 讀取數據服務器
setcookie('a[b]','val');cookie
setcookie('a[b]','',time()-1000);session
cookie優勢 存儲在客戶端,不會佔用服務器的資源。效率高。 缺點:存儲在客戶端不安全,不建議將一些敏感、重要的信息存儲在客戶端,用戶禁止cookie 將不能存儲cookie值。dom
session 將用戶的信息存儲在服務器中,用戶不能禁用session的使用。基於cookie的存儲,session_id 存儲在cookie中。cookie被禁用能夠用URL參數進行傳遞,保存session的狀態。blog
用戶讀取session ,會將cookie中存儲的session_id,在服務器中找到對應的session文件,而後讀取數據。
session_start();
$_SESSION;
$_SESSION = []; 刪除session數據
session_destroy();刪除session文件
session.auto_start 是否自動開始session
session.cookie_domain 存儲session的cookie的有效域名
session.cookie_lifetime
session.cookie_path
session.name 默認PHPSESSION
session.save_path 存儲路徑
session.use_cookies 是否用cookie存儲session_id
session.use_trans_sid 是否用傳遞的方式傳遞session_id
session.save_handler 句柄
session.gc_probability =1 垃圾回收機制
session.gz_divisor =100
session.gc_maxlifetime =1440 最大生命週期S
每100次會清理1次 超過1440秒
session 安全,存儲在服務器端 佔用資源
session_name session_id SID常量
session_set_save_handler() 存儲方式的改變 能夠存儲在mysql redis memcache 中