如果我每次调用控制器时初始化codeigniter会话,任何设置都会回退吗?

时间:2012-05-26 04:12:36

标签: php codeigniter session

我遇到了随机死于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()
    {

2 个答案:

答案 0 :(得分:0)

我从未遇到过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]);

加载时。

答案 1 :(得分:0)

如果您让CodeIgniter管理您的会话,我认为您不应该使用session_start()(如果您正在使用CodeIgniter' {{1} } / set_userdata()函数)。

它在CI用户文档的顶部说,CI没有使用PHP的本机会话处理,因此这可能会给您带来麻烦。会话通过加载会话库自动启动,如果您将其放在配置文件中,或者显式地使用get_userdata(),则会自动启动。

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

-GUS


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