Codeigniter会话不适用于所有控制器

时间:2012-05-04 01:55:23

标签: php codeigniter session controller global

允许在我的所有控制器中使用会话的最佳方法是什么?我认为有几种方法可以做到:

1)将()会话定义为全局变量。我听说这不是最好的方法 2)设置一个通用的MY_controller并将每个其他控制器扩展到它。在那里设立会议,这将使他们在所有班级中都可用 3)与将& get_instance()添加到每个控制器顶部的__constructor()函数有关的东西
在所有控制器中设置会话的最佳方法是什么?

我无法使用任何这些方法。任何想法都会有所帮助。谢谢

BTW,问题是codeigniter不喜欢同时发送ajax请求。它们互相干扰,会话数据被删除。

4 个答案:

答案 0 :(得分:6)

设置会话后:

$this->session->set_userdata('name', 'value');

您可以将其称为

$this->session->userdata('name');

但是,要使会话正常工作,您需要首先手动初始化Session类!这可以通过调用此函数来完成:

$this->load->library('session');

或者你可以让CodeIgniter到auto-load

<强> 应用/配置/ autoload.php

$autoload['libraries'] = array('session');

在控制器中设置会话是最佳做法。

我在这里看不到任何并发症。

答案 1 :(得分:2)

也许您必须在application/config/config.php文件

中设置一些配置变量

$config['cookie_domain']$config['cookie_path']似乎导致了这个问题。如果是这样,那么只需将它们的值设置为“”并试一试。

答案 2 :(得分:0)

对于任何遇到codeigniter会话问题的人,请不要打扰。 它们是通过cookie完成的,如果你的网站上有很多ajax,那些就会有很多错误。切换到原生会话。

答案 3 :(得分:0)

尝试在开发模式下将$config['cookie_secure']设置为FALSE