当前位置:首页>WordPress建站>WordPress开发>在WordPress中使用session

在WordPress中使用session

WordPress 主题 CoreNext

1.什么是session?

先来看看维基百科对session的解释:http://zh.wikipedia.org/wiki/%E4%BC%9A%E8%AF%9D_(%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%9

在计算机科学领域来说,尤其是在网络领域,会话session)是一种持久网络协议,在用户(或用户代理)端和服务器端之间创建关联,从而起到交换数据包的作用机制,session在网络协议(例如telnet或FTP)中是非常重要的部分。

在不包含会话层(例如UDP)或者是无法长时间驻留会话层(例如HTTP)的传输协议中,会话的维持需要依靠在传输数据中的高级别程序。例如,在浏览器和远程主机之间的HTTP传输中,HTTP cookie就会被用来包含一些相关的信息,例如session ID,参数和权限信息等。

后面还有一小段:

在动态页面完成解析的时候,储存在会话中的变量会被压缩后传输给客户端的Cookie。此时完全依靠客户端的文件系统来保存这些数据(或者内存)。

在每一个成功的请求中,Cookie中都保存有服务器端用户所具有的身份证明(PHP中的session id)或者更为完整的数据。

虽然这样的机制可以保存数据的前后关联,但是必须要保障数据的完整性和安全性。

PHP.net将session称为“会话支持”,是这样解释的:

会话支持在 PHP 中是在并发访问时由一个方法来保存某些数据.从而使你能够构建更多的定制程序 从而提高你的 web 网站的吸引力.

一个访问者访问你的 web 网站将被分配一个唯一的 id, 就是所谓的会话 id. 这个 id 可以存储在用户端的一个 cookie 中,也可以通过 URL 进行传递.

会话支持允许你将请求中的数据保存在超全局数组$_SESSION中. 当一个访问者访问你的网站,PHP 将自动检查(如果 session.auto_start 被设置为 1)或者在你要求下检查(明确通过 session_start() 或者隐式通过 session_register()) 当前会话 id 是否是先前发送的请求创建. 如果是这种情况, 那么先前保存的环境将被重建.

总之,session可以让你的程序更安全、更高效。可惜的是,Wordpress核心并不支持session。下面这个示意图是不支持session的wordpress的在被已登录用户访问时的情况:

很容易理解,是吧?

基本上,每次加载页面 – 或在每次用户定位到新页面 – 程序都要从数据库中查询必要的信息,然后将其呈现给用户。

这可能也是Wordpress相对于支持session的CMS核心来说比较浪费服务器资源的原因之一。

那么,如果程序是支持session的呢?

假如程序支持session,我们设置为:

不为没登录的访客设置session;

为登录的用户设置session;

用户退出时销毁session。

那会是怎么样呢?看下面的示意图:

简而言之:一旦用户登录,session会将某些信息存储进一个全局数组,以减轻数据库的负担。

2.Wordpress是否支持session?

WordPress核心不支持session,它支持cookie。

3.如何让Wordpress支持session?

上面简要介绍了session是什么以及其用途,并且说明了Wordpress核心不支持session,现在的问题就是:如何让Wordpress支持session了:

不多废话了,直接去下载Peter Wooster的插件Simple Session Support 吧,里面写的很简单,但是的确可用,并且可以供你写主题或插件时使用,但是别忘了给人家保留署名权。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
欢迎关注WordPress大学公众号 WPDAXUE
WordPress开发

使用Options Framework框架为自己的主题添加设置页面

2014-3-6 12:02:33

WordPress开发

我是如何用WordPress建一个婴儿用品网站的

2014-3-10 9:21:22

9 条回复 A文章作者 M管理员
  1. 😕 晕了
    在原的模板上加上session_start不可以吗

  2. yoby

    要在无任何输出前调用session_start函数

  3. 超級efly

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

    • coolwp.net

      请问你用的主题和插件都是哪些呢?据我所知,Wordpress本身支持cookie是没问题的,session是需要由主题或插件作者考虑的。

    • 超級efly

      可是那個「Simple Session Support」只是把所有session相關的東西包裝了成一個新的function,沒啥實質用途

    • coolwp.net

      这不是一篇符合拿来主义指导原则的文章,也就是说:它不是开包即用的,需要自己去做,所以,这篇文章是在“Wordpress”开发类目下,了解?

    • coolwp.net

      另外呢,我建议你了解下PHP中的session全局数组的概念,你可能会更明白些。

  4. 如果不是热爱编程这个职业 应该不会有人能一直坚持在这个工作岗位上吧 每天对的这么多的代码 这对于一个非爱好者来说是多么残忍的事情 而且每天都对着电脑 眼睛超负荷使用 给健康带来极大的威胁

  5. 海滨稻香

    长见识了!

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索