在Codeigniter 2中,如何使用本机会话?

时间:2012-05-07 15:03:15

标签: php codeigniter

如何在CodeIgniter中使用本机会话?

目前我在session_start中使用constants.php。这是正确的方法吗?有什么缺陷,还有更好的方法吗?

我这样做是因为我们有一个PHP应用程序,我们计划在CI中进行新的编码。

另外,我正在寻找一个优秀的CI文档,它教我CI基础知识,最好是版本2.

由于

4 个答案:

答案 0 :(得分:4)

通常,使用session_start然后读取/存储到$_SESSION就可以了。我历来做的是将session_start调用放入我的控制器的构造函数方法中:我有一个继承自CI_Controller的基类,它处理语言本地化,会话初始化和其他愚蠢的事情,如P3P标头设置。我所有的其他控制器都继承了它,然后它们都被设置了。

使用本机会话有时非常有用:我遇到了一些使用本机会话的组件,我根本不想处理修补。有(例如)Redis会话保存处理程序使用本机会话:可以为CI重写它,但是......为什么不只是使用那里的。

答案 1 :(得分:2)

使用

加载会话库
$this->load->library('session');

然后您可以使用

设置数据
$this->session->set_userdata((array)$userdata);

session_start 方法使用PHP的内置会话处理,这不是CI推荐的内容。引自官方文档:

  

Session类不使用本机PHP会话。它产生了   它自己的会话数据,为开发人员提供了更多的灵活性。

看一看 http://codeigniter.com/user_guide/libraries/sessions.html - CodeIgniter有很好的文档记录。

答案 2 :(得分:2)

我正在使用here描述的原生会话库。基本上这与CI会话库的工作方式相同,但使用PHP的本机会话,因此您可以使用docs中描述的功能。

要使用Codeigniter 2,请查看discussion of the article

答案 3 :(得分:1)

尝试阅读MY_Controller文件。根据扩展CI的设计方法,您可以在每个控制器中继承这一点并以一种很好的方式继承。将你的SESSION内容(以及其他任何跨站点)放在这里是最有意义的。

我在这里写了一篇简单的CI介绍文章:http://www.12devsofxmas.co.uk/2011/12/codeigniter/

如果您正在编写一个包含大量表单的应用程序,那么首先要使用该框架。我已经写了很多东西来处理模板,自动表单生成等等,它们都没有打包用于公开发布,但它们都适用于我们正在构建的应用程序。