首頁  >  文章  >  後端開發  >  PHP下SESSION和COOKIE的對比介紹

PHP下SESSION和COOKIE的對比介紹

jacklove
jacklove原創
2018-05-22 11:44:541397瀏覽

在快取中會遇到很多的問題,本文將對SESSION和COOKIE的比較介紹。

【Cookie】

1. 定義->存在瀏覽器中,即使在瀏覽器關閉或連線中斷,使用者仍可維護資料狀態;

2.生命週期-> 預設在瀏覽器會話期間(資料儲存在記憶體中),設定了有效期,資料保存在硬碟上;

3. 有效路徑-> 需要設定有效路徑path,預設路徑是目前路徑,如果全部路徑需要將path設定為'/';

4.有效網域->設定網域名稱domain,表示該網域下的該路徑有效,預設目前網域目前路徑;

5.cookie刪除->  直接採用setcookie("name",time()-1);

6. cookie啥時候生效->setcookie()函數後,會向客戶端發送一個cookie值,如果不刷新或瀏覽下一個頁面,客戶端就不會將cookie回傳;

7.cookie的數量->一個瀏覽器最多支援30個cookie,並且每個cookie的容量不能超過4KB,每個web站點設定的cookie數不能超過20個;

【Session】

1. 使用方式-> 使用時先用session_start() 初始化,建立或載入一個session_id;

2.生命週期-> 使用者存取頁面開始到斷開與網站的連線為止,每次連線時,都會自動產生一個SESSION ID 表示目前使用者與其他使用者;

3. 傳遞資料-> 在沒有斷開連線時,可以在不同頁面之間傳遞資料

4. PHP環境下,session資料存放地方-> 這裡比較複雜,我直接拷貝一段話,通俗講就是根據設定檔配置存放路徑,根據id指令檔名,進行單檔存放或依照層級存放,原話如下:

[plain] view plain copy

SESSION 的資料保存在哪裡呢? 

當然是在伺服器端,但不是保存在記憶體中,而是保存在檔案或資料庫中。

   預設情況下,PHP.ini 中設定的SESSION 保存方式是files(session.save_handler = files),即使用讀寫文件的方式保存SESSION 數據,而SESSION 文件保存的目錄由pathsession.save_pathsession.save_path指定,檔案名稱以sess_ 為前綴,後面跟著SESSION ID,如:sess_c72665af28a8b14c0fe11afe3b59b51b。文件中的資料即是序列化之後的 SESSION 資料了。

  如果訪問量大,可能產生的SESSION 檔案會比較多,這時可以設定分級目錄進行SESSION 檔案的保存,效率會提高很多,設定方法為:session.save_path="N;/save_path ",N 為分級的級數,save_path 為開始目錄。

  當寫入SESSION 資料的時候,php 會取得到客戶端的SESSION_ID,然後根據這個SESSION ID 到指定的SESSION 文件保存目錄中找到對應的SESSION 文件,不存在則創建之,最後將數據序列化之後寫入檔案【3】。讀取 SESSION 資料是也是類似的操作流程,對讀取的資料需要進行解序列化,產生對應的 SESSION 變數。 

注意事項:

1.使用session_start()函數前不能有任何輸出;

2.session不會因為瀏覽器的關閉而刪除。但是存有session ID的cookie的預設過期時間是會話等級。也就是使用者關閉了瀏覽器,那麼儲存在客戶端的session ID就會遺失,但是儲存在伺服器端的session資料並不會被立即刪除。從客戶端即瀏覽器看來,好像session被刪除了一樣(因為我們遺失了session ID,找不到原來的session資料了)。

本文講解了SESSION和COOKIE之間的區別,更多相關內容請關注php中文網。

相關推薦:

了解php取得客戶端ip的方法

php中關於Session的使用詳解

php中die(),exit(),return的差異介紹

以上是PHP下SESSION和COOKIE的對比介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn