1.什么是session?
先來(lái)看看維基百科對(duì)session的解釋:http://zh.wikipedia.org/wiki/%E4%BC%9A%E8%AF%9D_(%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%9
在計(jì)算機(jī)科學(xué)領(lǐng)域來(lái)說(shuō),尤其是在網(wǎng)絡(luò)領(lǐng)域,會(huì)話(session)是一種持久網(wǎng)絡(luò)協(xié)議,在用戶(或用戶代理)端和服務(wù)器端之間創(chuàng)建關(guān)聯(lián),從而起到交換數(shù)據(jù)包的作用機(jī)制,session在網(wǎng)絡(luò)協(xié)議(例如telnet或FTP)中是非常重要的部分。
在不包含會(huì)話層(例如UDP)或者是無(wú)法長(zhǎng)時(shí)間駐留會(huì)話層(例如HTTP)的傳輸協(xié)議中,會(huì)話的維持需要依靠在傳輸數(shù)據(jù)中的高級(jí)別程序。例如,在瀏覽器和遠(yuǎn)程主機(jī)之間的HTTP傳輸中,HTTP cookie就會(huì)被用來(lái)包含一些相關(guān)的信息,例如session ID,參數(shù)和權(quán)限信息等。
后面還有一小段:
在動(dòng)態(tài)頁(yè)面完成解析的時(shí)候,儲(chǔ)存在會(huì)話中的變量會(huì)被壓縮后傳輸給客戶端的Cookie。此時(shí)完全依靠客戶端的文件系統(tǒng)來(lái)保存這些數(shù)據(jù)(或者內(nèi)存)。
在每一個(gè)成功的請(qǐng)求中,Cookie中都保存有服務(wù)器端用戶所具有的身份證明(PHP中的session id)或者更為完整的數(shù)據(jù)。
雖然這樣的機(jī)制可以保存數(shù)據(jù)的前后關(guān)聯(lián),但是必須要保障數(shù)據(jù)的完整性和安全性。
PHP.net將session稱為“會(huì)話支持”,是這樣解釋的:
會(huì)話支持在 PHP 中是在并發(fā)訪問(wèn)時(shí)由一個(gè)方法來(lái)保存某些數(shù)據(jù).從而使你能夠構(gòu)建更多的定制程序 從而提高你的 web 網(wǎng)站的吸引力.
一個(gè)訪問(wèn)者訪問(wèn)你的 web 網(wǎng)站將被分配一個(gè)唯一的 id, 就是所謂的會(huì)話 id. 這個(gè) id 可以存儲(chǔ)在用戶端的一個(gè) cookie 中,也可以通過(guò) URL 進(jìn)行傳遞.
會(huì)話支持允許你將請(qǐng)求中的數(shù)據(jù)保存在超全局?jǐn)?shù)組$_SESSION中. 當(dāng)一個(gè)訪問(wèn)者訪問(wèn)你的網(wǎng)站,PHP 將自動(dòng)檢查(如果 session.auto_start 被設(shè)置為 1)或者在你要求下檢查(明確通過(guò) session_start() 或者隱式通過(guò) session_register()) 當(dāng)前會(huì)話 id 是否是先前發(fā)送的請(qǐng)求創(chuàng)建. 如果是這種情況, 那么先前保存的環(huán)境將被重建.
總之,session可以讓你的程序更安全、更高效。可惜的是,Wordpress核心并不支持session。下面這個(gè)示意圖是不支持session的wordpress的在被已登錄用戶訪問(wèn)時(shí)的情況:

很容易理解,是吧?
基本上,每次加載頁(yè)面 – 或在每次用戶定位到新頁(yè)面 – 程序都要從數(shù)據(jù)庫(kù)中查詢必要的信息,然后將其呈現(xiàn)給用戶。
這可能也是Wordpress相對(duì)于支持session的CMS核心來(lái)說(shuō)比較浪費(fèi)服務(wù)器資源的原因之一。
那么,如果程序是支持session的呢?
假如程序支持session,我們?cè)O(shè)置為:
不為沒(méi)登錄的訪客設(shè)置session;
為登錄的用戶設(shè)置session;
用戶退出時(shí)銷毀session。
那會(huì)是怎么樣呢?看下面的示意圖:

簡(jiǎn)而言之:一旦用戶登錄,session會(huì)將某些信息存儲(chǔ)進(jìn)一個(gè)全局?jǐn)?shù)組,以減輕數(shù)據(jù)庫(kù)的負(fù)擔(dān)。
2.Wordpress是否支持session?
WordPress核心不支持session,它支持cookie。
3.如何讓W(xué)ordpress支持session?
上面簡(jiǎn)要介紹了session是什么以及其用途,并且說(shuō)明了Wordpress核心不支持session,現(xiàn)在的問(wèn)題就是:如何讓W(xué)ordpress支持session了:
不多廢話了,直接去下載Peter Wooster的插件Simple Session Support 吧,里面寫(xiě)的很簡(jiǎn)單,但是的確可用,并且可以供你寫(xiě)主題或插件時(shí)使用,但是別忘了給人家保留署名權(quán)。






?? 暈了
在原的模板上加上session_start不可以嗎
要在無(wú)任何輸出前調(diào)用session_start函數(shù)
WordPress可以直接使用SESSION的啊。。。。
請(qǐng)問(wèn)你用的主題和插件都是哪些呢?據(jù)我所知,Wordpress本身支持cookie是沒(méi)問(wèn)題的,session是需要由主題或插件作者考慮的。
可是那個(gè)「Simple Session Support」只是把所有session相關(guān)的東西包裝了成一個(gè)新的function,沒(méi)啥實(shí)質(zhì)用途
這不是一篇符合拿來(lái)主義指導(dǎo)原則的文章,也就是說(shuō):它不是開(kāi)包即用的,需要自己去做,所以,這篇文章是在“Wordpress”開(kāi)發(fā)類目下,了解?
另外呢,我建議你了解下PHP中的session全局?jǐn)?shù)組的概念,你可能會(huì)更明白些。
如果不是熱愛(ài)編程這個(gè)職業(yè) 應(yīng)該不會(huì)有人能一直堅(jiān)持在這個(gè)工作崗位上吧 每天對(duì)的這么多的代碼 這對(duì)于一個(gè)非愛(ài)好者來(lái)說(shuō)是多么殘忍的事情 而且每天都對(duì)著電腦 眼睛超負(fù)荷使用 給健康帶來(lái)極大的威脅
長(zhǎng)見(jiàn)識(shí)了!