如何在CodeIgniter中使用本机会话?
目前我在session_start
中使用constants.php
。这是正确的方法吗?有什么缺陷,还有更好的方法吗?
我这样做是因为我们有一个PHP应用程序,我们计划在CI中进行新的编码。
另外,我正在寻找一个优秀的CI文档,它教我CI基础知识,最好是版本2.
由于
答案 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/
如果您正在编写一个包含大量表单的应用程序,那么首先要使用该框架。我已经写了很多东西来处理模板,自动表单生成等等,它们都没有打包用于公开发布,但它们都适用于我们正在构建的应用程序。