如果我每次调用控制器时初始化代码点火器会话,则任何挫折都会倒退


Any set backs if I initialize codeigniter session every time controller gets called?

我在 IE 上随机死亡的 Codeigniter 会话遇到了问题,我到处搜索并尝试了所有方法,该错误不会消失,我尝试了检查 ajax 的功能是否也不会 sess_update() 不起作用,所以我的问题是,如果我初始化 CI 会话每个控制器调用会有什么挫折?我有本机会话和 CI 会话,但还需要几天时间才能将所有内容更改为本机会话。这是一个临时修复。

  class Transactions extends Controller {
    function Transactions()
    {
        session_start();
        parent::Controller();   
        $this->load->model('Modelcontracts');
        $this->load->model('Modelsignup');
        $this->load->model('Modeltransactions');
        $this->session->set_userdata('account_id',$_SESSION['account_id']);
        $this->session->set_userdata('email',$_SESSION['email']);
        $this->session->set_userdata('account_type',$_SESSION['account_type']);
        $this->session->set_userdata('parent_account_id',$_SESSION['parent_account_id']);
        $this->session->set_userdata('accountrole_id',$_SESSION['accountrole_id']);
        $this->session->set_userdata('user_type_id',$_SESSION['user_type_id']);
    }

    function index()
    {

我从来没有遇到过 CodeIgniters 会话的任何问题。您是否为ci_sessions创建了 MySQL 表?

挫折基本上是一个不合逻辑的电话。如果这无关紧要,那么我看不到任何挫折。

不过,您可以像这样简化代码:

$arr = array('account_id', 'email', 'account_type', 'parent_account_id', 'accountrole_id', 'user_type_id');
foreach($arr as $h)
    if (isset($_SESSION[$h]))
        $this->session->set_userdata($h, $_SESSION[$h]);
    // else echo "Session [{$h}] doesn't exist!";

或者扩展会话库以执行

foreach(array_keys($_SESSION) as $h)
    $this->CI->session->set_userdata($h, $_SESSION[$h]);

加载时。

如果您让 CodeIgniter 管理您的会话,我认为您不应该使用 session_start()(如果您使用的是 CodeIgniter 的 set_userdata()/get_userdata() 函数,您就是这样)。

它在 CI 用户文档的顶部说 CI 不使用 PHP 的本机会话处理,因此这可能会给您带来麻烦。会话通过加载会话库自动启动,如果将其放入配置文件中,则会自动启动会话,或者使用 $this->load->library('session');

显式启动。

http://codeigniter.com/user_guide/libraries/sessions.html

-格斯


编辑:我遇到了一个关于IE/CI会话问题的CI论坛帖子。显然,这是一个众所周知的问题。http://codeigniter.com/forums/viewthread/211955/