允许在我的所有控制器中使用会话的最佳方法是什么?我认为有几种方法可以做到:
1)将()会话定义为全局变量。我听说这不是最好的方法
2)设置一个通用的MY_controller并将每个其他控制器扩展到它。在那里设立会议,这将使他们在所有班级中都可用
3)与将& get_instance()添加到每个控制器顶部的__constructor()函数有关的东西
在所有控制器中设置会话的最佳方法是什么?
我无法使用任何这些方法。任何想法都会有所帮助。谢谢
BTW,问题是codeigniter不喜欢同时发送ajax请求。它们互相干扰,会话数据被删除。
答案 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