session是一種會話技術,它基於cookie,相比cookie具有更高的安全性。
1.session原理
,session會給用戶端發送一個session id,同時在服務端建立一個session資料區,用戶端在請求的時候提交session id,服務端通過這個session id在session資料區尋找。用戶端僅存了一個session id ,它具有一定的時效性,重要的資訊還是儲存在服務端的,所以session會比較安全。
2. session的操作
session_set.php
來看看session儲存資料的檔案:
session資料區的內容都是通過序列化後的字串儲存的,讀取的時候再執行還原序列化,session 支援多種資料類型儲存,而cookie只支援string.
3.seesion中用戶端cookie屬性設定
session的使用是基於cookie的,必須在用戶端儲存一個session id的cookie,那麼服務端可以設定這個cookie的屬性來告訴瀏覽器如何產生這個cookie:
注意: session_set_cookie_params 必須要在 session_start()前設定。
4.session資料區記憶體回收設定
session資料區的資料隨著使用者對伺服器的訪問會產生越來越多的垃圾資料,所以有必須進行垃圾掃描和垃圾清理。當然伺服器不可能時時去掃描哪些資料是到期了,那樣伺服器損耗很大,所以呢必須一定幾率去觸發,判斷到是垃圾的就清理掉。
下面兩個參數是設定觸發垃圾掃描的機率
ini_set(‘session.gc_probability’, ‘1’);
ini_set(‘session.gc_divisor’, ‘3’);
設定多長時間後就是垃圾,可以被回收
ini_set(‘session.gc_maxlifetime’, ‘10’);
5.禁用cookie如何使用session
show.html
Insert title here forbidden cookie
session_get_no_cookie.php
6.session如何持久化
通常來說session不提倡持久化。
如果非要持久化,如下設定:
session_set_cookie_params(PHP_INT_MAX);ini_set('session.gc_maxlifetime', PHP_INT_MAX);#注意一定要在session_start前設定!! 7.session和cookie區別和聯絡
聯絡:
Session基於COOKIE,session-id儲存於cookie中,cookie資料存放在用戶端瀏覽器上,session主要資料放在伺服器上。
區別: