1

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

目前我正在使用session_start. constants.php那是正确的方法吗?有什么陷阱,有没有更好的方法?

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

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

谢谢

4

4 回答 4

4

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

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

于 2012-05-07T15:24:35.253 回答
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 有很好的文档记录。

于 2012-05-07T15:08:47.537 回答
2

我正在使用此处描述的本机会话库。基本上这与 CI 会话库的工作方式相同,但使用 PHP 的本机会话,因此您可以使用文档中描述的函数。

要使用 Codeigniter 2,请查看文章的讨论

于 2012-05-07T15:45:15.267 回答
1

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

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

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

于 2012-05-08T06:40:27.447 回答