本文是根據慕課網Jason老師的課程進行的PHP面試知識點總結和升華,如有侵權請聯系我進行刪除。
在上一篇中,冷月為大家分享了文件及目錄處理考點,大家一定要根據自己的薄弱點進行查漏補缺,嘗試著練習目錄的復制和刪除函數的編寫。今天,冷月為大家分享會話控制考點。
回顧真題
簡述cookie和session的區別及各自的工作機制,存儲位置等。簡述cookie的優缺點。
答案:
COOKIE:
在網站中,http請求是無狀態的。也就是說即使第一次和服務器連接后并且登錄成功后,第二次請求服務器依然不能知道當前請求是哪個用戶。cookie的出現就是為了解決這個問題,第一次登錄后服務器返回一些數據(cookie)給瀏覽器,然后瀏覽器保存在本地,當該用戶發送第二次請求的時候,就會自動的把上次請求存儲的cookie數據自動的攜帶給服務器,服務器通過瀏覽器攜帶的數據就能判斷當前用戶是哪個了。cookie存儲的數據量有限,不同的瀏覽器有不同的存儲大小,但一般不超過4KB。因此使用cookie只能存儲一些小量的數據。
SESSION:
session和cookie的作用有點類似,都是為了存儲用戶相關的信息。不同的是,cookie是存儲在本地瀏覽器,而session存儲在服務器。存儲在服務器的數據會更加的安全,不容易被竊取。但存儲在服務器也有一定的弊端,就是會占用服務器的資源,但現在服務器已經發展至今,一些session信息還是綽綽有余的。
cookie和session結合使用:
web開發發展至今,cookie和session的使用已經出現了一些非常成熟的方案。在如今的市場或者企業里,一般有兩種存儲方式:
1、存儲在服務端:通過cookie存儲一個session_id,然后具體的數據則是保存在session中。如果用戶已經登錄,則服務器會在cookie中保存一個session_id,下次再次請求的時候,會把該session_id攜帶上來,服務器根據session_id在session庫中獲取用戶的session數據。就能知道該用戶到底是誰,以及之前保存的一些狀態信息。這種專業術語叫做server side session。
2、將session數據加密,然后存儲在cookie中。這種專業術語叫做client side session。flask采用的就是這種方式,但是也可以替換成其他形式。
考點分析
PHP的會話控制技術
COOKIE:
cookie 常用于識別用戶。cookie 是一種服務器留在用戶計算機上的小文件。每當同一臺計算機通過瀏覽器請求頁面時,這臺計算機將會發送 cookie。通過 PHP,您能夠創建并取回 cookie 的值。
操作
創建cookie
setcookie(name, value, expire, path, domain);
讀取cookie
PHP 的 $_COOKIE 變量用于取回 cookie 的值。
刪除cookie
當刪除 cookie 時,您應當使過期日期變更為過去的時間點。
Session:
PHP session 變量用于存儲關于用戶會話(session)的信息,或者更改用戶會話(session)的設置。Session 變量存儲單一用戶的信息,并且對于應用程序中的所有頁面都是可用的。
操作
在您把用戶信息存儲到 PHP session 中之前,首先必須啟動會話。
session_start() 函數
存儲 Session 變量
存儲和取回 session 變量的正確方法是使用 PHP $_SESSION 變量:
銷毀 Session
如果您希望刪除某些 session 數據,可以使用 unset() 或 session_destroy() 函數。unset() 函數用于釋放指定的 session 變量:
配置Session
session.auto_start
php.ini配置session.auto_start=0默認關閉,session.auto_start 開啟就自動完成了session_start()。
session.cookie.lifetime
session.cookie.lifetime 默認是0,即瀏覽器關閉,session失效;修改這個值的作用是修改sessionid以cookie的形式保留在瀏覽器的時間長度,也就是說這個值設置一個小時,名為sessionid的cookie就保留在瀏覽器一個小時,session一個小時后才過期;
垃圾回收
session.gc_maxlifetime; 設置過期session時間,默認1440秒(24分鐘)
session.gc_probability/session.gc_divisor; 啟動垃圾回收機制的概率(建議值為1/1000——5000)
session_id()
session_id — 獲取/設置當前會話 ID
session_name()
session_name — 讀取/設置會話名稱
一網打盡
session信息的存儲方式、如何遍歷session
答案:session是一種服務端機制,服務器使用一種類似于散列表的結構來保存信息,在PHP中直接用$_SESSION數組來遍歷即可
審核編輯 黃昊宇
-
PHP
+關注
關注
0文章
462瀏覽量
28624
發布評論請先 登錄
網站移動端適配 SEO 要點
面試必看!排隊自旋鎖32位變量的域劃分與核心作用
阻燃系列基礎知識
地線的基礎知識
從 0 到 1:用 PHP 爬蟲優雅地拿下京東商品詳情
安信可AI語音開發板AiPi-PalChatV1 + MCP,通過HomeAssistant自動化控制設備
【硬件方向】名企面試筆試真題:大疆創新校園招聘筆試題
最易讀懂的理工科基礎叢書——圖解電機基礎知識入門
反激式開關電源電路的基礎知識
php面試筆記(8):php基礎知識、會話控制考點
評論