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