【问题标题】:Session Timeout in codeigniter dyanamiclycodeigniter中的会话超时动态
【发布时间】:2014-01-19 12:45:01
【问题描述】:

我有关于 codeigniter Timeout 的问题。

我知道配置文件夹手动设置会话超时,如 l

$config['sess_expiration']      = 123;

但我需要网站管理员在管理页面中动态管理会话超时

请帮我如何实现这个逻辑

我试过这个逻辑,但没有用

$this->session->sess_expiration = "120";

注意:这里我将数据库存储在值中。根据我可以设置到会话到期时间的数据库值

注1:$config['sess_time_to_update'] = 30;这个值小于会话过期时间

总逻辑码:

public function edit($id)
    {
        Assets::add_css('../plugins/forms/uniform/uniform.default.css');
        Assets::add_css('../plugins/forms/select/select2.css');
        Assets::add_css('../plugins/forms/validate/validate.css');
        Assets::add_css('../plugins/misc/qtip/jquery.qtip.css');
        Assets::add_js('../plugins/charts/sparkline/jquery.sparkline.min.js');
        Assets::add_js('../plugins/forms/uniform/jquery.uniform.min.js');
        Assets::add_js('../plugins/forms/select/select2.min.js');
        Assets::add_js('../plugins/forms/validate/jquery.validate.min.js');
        Assets::add_js('../plugins/forms/wizard/jquery.bbq.js');
        Assets::add_js('../plugins/forms/wizard/jquery.form.js');
        Assets::add_js('../plugins/forms/wizard/jquery.form.wizard.js');
        Assets::add_module_js('setting','setting'); 
        if ($_POST)
       {
            $current_date = date("Y-m-d H:i:s");
            $data = array(
                            's_meta_value' => $this->input->post('s_meta_value'),
                            'updated_on' => $current_date
                          );
            $this->setting_model->session_mng_update($data,$id);
            $session_val=  $this->input->post('s_meta_value');
           if($session_val == 0)
           {
             $this->session->sess_expiration = '0';
           }
           else
           {          

            $this->session->sess_expiration = "120";
          // $val1 = $this->config->item('sess_expiration');
       // print_r($val1);
            //$session_seconds = ($session_val*60);
          $val2 = $this->config->set_item('sess_expiration',50);
          $this->session->CI_Session();
         //$val1=  $this->config->set_item('sess_expiration',50);
            $val3 = $this->config->item('sess_expiration');
             print_r($val3);exit;


           }

            Template::redirect('setting/setting/display');


        } 

       $val3 = $this->config->item('sess_expiration');
        print_r($val3);exit;
        $data = $this->setting_model->session_mng_edit($id);
        Template::set('page_title', 'Edit Session Management');
        Template::set('data', $data);
        Template::set_view('setting/session_management/edit_session_management');
        Template::render();       
}

【问题讨论】:

    标签: php codeigniter codeigniter-2


    【解决方案1】:

    首先,您可以通过$this->input->set_cookie()为此过程设置cookies。但是如果你想覆盖配置变量然后尝试

    $this->config->set_item('sess_expiration',120);
    

    同样调用会话构造函数来更新值

    $this->session->CI_Session();
    

    【讨论】:

    • 它现在不能在 bonfire codeigniter 中工作我正在使用 codeigniter 的 bonfire HMVC
    • Nouphal 请再次参考上面的代码我已经更新到代码
    • print_r($val3);exit 的输出是什么
    • 我只是在这里调试,我正在确定是否设置了配置值
    • 我得到了答案:第一个 config>config.php 文件注释或删除这个 //$config['sess_expiration'] = 7200; // 这个 sess 专家级逻辑写在 config/application 文件夹中你会去 config >appliction.php 文件夹做这样的 require_once( BASEPATH .'database/DB'.EXT ); $query = DB()->select('s_meta_value'); $query = DB()->get('lr_settings_meta'); $res=$query->result(); $ideal_time=$res[0]->s_meta_value; if($ideal_time) { $session_seconds = ($ideal_time*60); $config['sess_expiration'] = "$session_seconds"; } 其他 { $config['sess_expiration'] = 7200; }
    【解决方案2】:

    你应该使用这样的东西:

    $remember_me = $this->input->post('remember_me');
    if ($remember_me == 'remember_me')
    {
        //set session to non-expiring
        $this->session->sess_expiration = '32140800'; //~ one year
        $this->session->sess_expire_on_close = 'false';
        #$this->session->set_userdata($session_data);
    }
    else
    {
        //set session expire time, after that user should login again
        $this->session->sess_expiration = '1800'; //30 Minutes
        $this->session->sess_expire_on_close = 'true';
        #$this->session->set_userdata($session_data);
    }
    
    //set session and go to Dashboard or Admin Page
    $this->session->set_userdata(array(
        'id' => $result[0]['id'],
        'username' => $result[0]['username']
    ));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多