我在使用CodeIgniters实现会话时遇到一些问题在重定向后被删除所以我恢复正常的PHP会话。
session_start();
的最佳位置在哪里,假设我希望在每个页面都调用它而不将其添加到每个控制器构造函数中?
我猜它会把它放在主要的index.php的顶部会工作正常,只是想确保这样做不会破坏任何东西或者是否有一个更好的/标准的位置来放置它? / p>
答案 0 :(得分:6)
这就是为什么我总是使用包含应用程序范围代码的扩展控制器。
要扩展codeigniter控制器,请将此代码放在名为MY_Controller.php的文件中,并将其保存到核心文件夹中。
class MY_Controller extends CI_Controller
{
public function __construct()
{
parent::__construct();
session_start();
}
}
如果您决定使用此解决方案,则所有控制器都需要扩展MY_Controller。
答案 1 :(得分:3)
你可以轻松地将它们放入index.php
。这是您的codeigniter应用程序的入口点,并在每次请求时调用。
虽然通常不建议您在升级codeigniter版本时,但需要记住将自定义项复制到index.php。
而不是index.php,您可以使用预先申请hook
答案 2 :(得分:0)
您无法直接在codeigniter中使用session_start();
。
相反,你必须使用:
$this->library->load('session');
$this->session->set_userdata(array('name' => 'name','age' =>
'age','etc' => 'etc');