當(dāng)前位置:首頁(yè)>WordPress建站>WordPress開(kāi)發(fā)>在WordPress中使用session

在WordPress中使用session

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)。

聲明:本站所有文章,如無(wú)特殊說(shuō)明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個(gè)人或組織,在未征得本站同意時(shí),禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書(shū)籍等各類媒體平臺(tái)。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關(guān)注WordPress大學(xué)公眾號(hào) WPDAXUE
WordPress開(kāi)發(fā)

使用Options Framework框架為自己的主題添加設(shè)置頁(yè)面

2014-3-6 12:02:33

WordPress開(kāi)發(fā)

我是如何用WordPress建一個(gè)嬰兒用品網(wǎng)站的

2014-3-10 9:21:22

9 條回復(fù) A文章作者 M管理員
  1. ?? 暈了
    在原的模板上加上session_start不可以嗎

  2. yoby

    要在無(wú)任何輸出前調(diào)用session_start函數(shù)

  3. 超級(jí)efly

    WordPress可以直接使用SESSION的啊。。。。

    • coolwp.net

      請(qǐng)問(wèn)你用的主題和插件都是哪些呢?據(jù)我所知,Wordpress本身支持cookie是沒(méi)問(wèn)題的,session是需要由主題或插件作者考慮的。

    • 超級(jí)efly

      可是那個(gè)「Simple Session Support」只是把所有session相關(guān)的東西包裝了成一個(gè)新的function,沒(méi)啥實(shí)質(zhì)用途

    • coolwp.net

      這不是一篇符合拿來(lái)主義指導(dǎo)原則的文章,也就是說(shuō):它不是開(kāi)包即用的,需要自己去做,所以,這篇文章是在“Wordpress”開(kāi)發(fā)類目下,了解?

    • coolwp.net

      另外呢,我建議你了解下PHP中的session全局?jǐn)?shù)組的概念,你可能會(huì)更明白些。

  4. 如果不是熱愛(ài)編程這個(gè)職業(yè) 應(yīng)該不會(huì)有人能一直堅(jiān)持在這個(gè)工作崗位上吧 每天對(duì)的這么多的代碼 這對(duì)于一個(gè)非愛(ài)好者來(lái)說(shuō)是多么殘忍的事情 而且每天都對(duì)著電腦 眼睛超負(fù)荷使用 給健康帶來(lái)極大的威脅

  5. 海濱稻香

    長(zhǎng)見(jiàn)識(shí)了!

?
個(gè)人中心
購(gòu)物車(chē)
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

苏尼特右旗| 云霄县| 保山市| 察隅县| 黄梅县| 莎车县| 遂溪县| 尖扎县| 乐亭县| 铜陵市| 柳州市| 黄大仙区| 宝坻区| 电白县| 永春县| 西林县| 嘉峪关市| 木兰县| 云和县| 德格县| 遵义县| 冕宁县| 龙里县| 明溪县| 泉州市| 体育| 沂源县| 东山县| 云林县| 石屏县| 正定县| 虞城县| 克东县| 得荣县| 桓台县| 两当县| 通江县| 西安市| 通山县| 司法| 和田市|