性价比最高的香港ASP、PHP主机提供商
做网站,就上凡科建站

在WordPress中使用session

Loading
0
Comodo SLL证书促销 - 免费ssl证书申请_ssl证书购买_ev ssl证书_https证书购买 - GDCA_数安时代

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 吧,里面写的很简单,但是的确可用,并且可以供你写主题或插件时使用,但是别忘了给人家保留署名权。

沃鹏科技 - 专业的WordPress建站服务平台

关于 coolwp.net

只要是地产商拥护的,我们都反对,除了世界和平与宇宙和谐,但他们貌似就是为了破坏这些为生的。

9 条评论

  1. :???: 晕了
    在原的模板上加上session_start不可以吗

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

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

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

发表评论