本文是根據(jù)慕課網(wǎng)Jason老師的課程進行的PHP面試知識點總結(jié)和升華,如有侵權(quán)請聯(lián)系我進行刪除。
在上一篇中,冷月為大家分享了文件及目錄處理考點,大家一定要根據(jù)自己的薄弱點進行查漏補缺,嘗試著練習目錄的復制和刪除函數(shù)的編寫。今天,冷月為大家分享會話控制考點。
回顧真題
簡述cookie和session的區(qū)別及各自的工作機制,存儲位置等。簡述cookie的優(yōu)缺點。
答案:
COOKIE:
在網(wǎng)站中,http請求是無狀態(tài)的。也就是說即使第一次和服務器連接后并且登錄成功后,第二次請求服務器依然不能知道當前請求是哪個用戶。cookie的出現(xiàn)就是為了解決這個問題,第一次登錄后服務器返回一些數(shù)據(jù)(cookie)給瀏覽器,然后瀏覽器保存在本地,當該用戶發(fā)送第二次請求的時候,就會自動的把上次請求存儲的cookie數(shù)據(jù)自動的攜帶給服務器,服務器通過瀏覽器攜帶的數(shù)據(jù)就能判斷當前用戶是哪個了。cookie存儲的數(shù)據(jù)量有限,不同的瀏覽器有不同的存儲大小,但一般不超過4KB。因此使用cookie只能存儲一些小量的數(shù)據(jù)。
SESSION:
session和cookie的作用有點類似,都是為了存儲用戶相關的信息。不同的是,cookie是存儲在本地瀏覽器,而session存儲在服務器。存儲在服務器的數(shù)據(jù)會更加的安全,不容易被竊取。但存儲在服務器也有一定的弊端,就是會占用服務器的資源,但現(xiàn)在服務器已經(jīng)發(fā)展至今,一些session信息還是綽綽有余的。
cookie和session結(jié)合使用:
web開發(fā)發(fā)展至今,cookie和session的使用已經(jīng)出現(xiàn)了一些非常成熟的方案。在如今的市場或者企業(yè)里,一般有兩種存儲方式:
1、存儲在服務端:通過cookie存儲一個session_id,然后具體的數(shù)據(jù)則是保存在session中。如果用戶已經(jīng)登錄,則服務器會在cookie中保存一個session_id,下次再次請求的時候,會把該session_id攜帶上來,服務器根據(jù)session_id在session庫中獲取用戶的session數(shù)據(jù)。就能知道該用戶到底是誰,以及之前保存的一些狀態(tài)信息。這種專業(yè)術語叫做server side session。
2、將session數(shù)據(jù)加密,然后存儲在cookie中。這種專業(yè)術語叫做client side session。flask采用的就是這種方式,但是也可以替換成其他形式。
考點分析
PHP的會話控制技術
COOKIE:
cookie 常用于識別用戶。cookie 是一種服務器留在用戶計算機上的小文件。每當同一臺計算機通過瀏覽器請求頁面時,這臺計算機將會發(fā)送 cookie。通過 PHP,您能夠創(chuàng)建并取回 cookie 的值。
操作
創(chuàng)建cookie
setcookie(name, value, expire, path, domain);
讀取cookie
PHP 的 $_COOKIE 變量用于取回 cookie 的值。
刪除cookie
當刪除 cookie 時,您應當使過期日期變更為過去的時間點。
Session:
PHP session 變量用于存儲關于用戶會話(session)的信息,或者更改用戶會話(session)的設置。Session 變量存儲單一用戶的信息,并且對于應用程序中的所有頁面都是可用的。
操作
在您把用戶信息存儲到 PHP session 中之前,首先必須啟動會話。
session_start() 函數(shù)
存儲 Session 變量
存儲和取回 session 變量的正確方法是使用 PHP $_SESSION 變量:
銷毀 Session
如果您希望刪除某些 session 數(shù)據(jù),可以使用 unset() 或 session_destroy() 函數(shù)。unset() 函數(shù)用于釋放指定的 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 — 讀取/設置會話名稱
一網(wǎng)打盡
session信息的存儲方式、如何遍歷session
答案:session是一種服務端機制,服務器使用一種類似于散列表的結(jié)構(gòu)來保存信息,在PHP中直接用$_SESSION數(shù)組來遍歷即可
審核編輯 黃昊宇
-
PHP
+關注
關注
0文章
454瀏覽量
27543
發(fā)布評論請先 登錄
【硬件方向】名企面試筆試真題:大疆創(chuàng)新校園招聘筆試題
功率器件熱設計基礎知識
華為云 Flexus X 實例下的場景體驗——小企業(yè)的福星——最簡單的 php 環(huán)境搭建

PHP48_4P9X4P9,PHP48_4P9X4P9-L,PHP48_4P9X4P9-M,這三種封裝除了焊盤的長度不同還有什么區(qū)別呢?
基于NFS實現(xiàn)WordPress
全新的半導體基礎知識

評論