2017-08-03 54 views
0

我的config.php設置笨記得我的登錄由會話

$config['sess_driver'] = 'files'; 
$config['sess_cookie_name'] = 'ci_session'; 
$config['sess_expiration'] = 0; 
$config['sess_expire_on_close'] = TRUE; 
$config['sess_save_path'] = NULL; 
$config['sess_match_ip'] = FALSE; 
$config['sess_time_to_update'] = 300; 
$config['sess_regenerate_destroy'] = FALSE; 

按照文檔的做工精細,會議瀏覽器結束止。 但是如果我想保持1年的會話(記住我的功能)。

我試圖覆蓋記住我的設置。但未能

$new_expiration = (60*60*24*365); //A year milliseconds 

$this->config->set_item('sess_expiration', $new_expiration); 
$this->config->set_item('sess_expire_on_close', FALSE); 

$this->session->sess_expiration = $new_expiration; 
$this->session->sess_expire_on_close = FALSE; 
$this->session->set_userdata('name','virat'); 

在另一個文件

echo $this->session->userdata('name'); 
print_r($this->session->userdata()); 

檢查代碼有沒有辦法忽略默認設置來保存會話? 我做錯了什麼? 版本:CI3

更新 - >> 我仍在努力實現目標。我想我找到了一個解決方法。 每次您閱讀會話時,CI都會更新會話Cookie文件。

另一個問題是CI不會簡單地通過$ this更新config.php值。

所以

public function __construct() 
    { 
     parent::__construct(); 
     $this->CI = & get_instance(); 
     $this->CI->config->set_item('sess_expiration', 1253); 


    } 

請直接打電話給CI本身的工作原理。它會更新config.php變量。 另一點是你需要在每個控制器中做到這一點「一次讀取沒有config.php覆蓋」將清除cookie值和會話值。您也可以將其包含在MY_controller可選中。

+0

你爲什麼不使用'cookie' insted的。 – Regolith

+0

會議不能容納太多。使用cookie ... –

+0

我可以,但只是嘗試會話,有什麼辦法嗎?也想到Cookie +數據庫,不想直接存儲用戶ID,將一個隨機的唯一號碼保存到cookie。 CI還通過db提供會話,Regolith,Abdulla Nilam –

回答

0

好嗎 - 我試圖解釋什麼,我會做 - 根據您的問題,這些意見

我假設你的複選框的名稱是「自動登錄」像

<input type="checkbox" name="autologin" value="1" /> 

如果有人檢查「記住我「並提交證書後,在您登錄控制器或模型,你應該做到以下幾點:

$this->load->helper("cookie"); 

$autoLogin = $this->input->post("autologin",true); 

if ($autoLogin == 1) 
{ 
    $cookie = array(
     'name' => 'autologin', 
     'value' => '1', 
     'expire' => '31536000', 
     'path' => '/' 
    ); 
    $this->input->set_cookie($cookie); 
} 
else 
{ 
    delete_cookie("autologin"); 
} 

,之後 - 你需要改變我的唯一的事情你的配置文件。

類似的東西,應該做的伎倆

$config['sess_driver'] = 'files'; 
$config['sess_cookie_name'] = 'ci_session'; 
$config['sess_save_path'] = NULL; 
$config['sess_match_ip'] = FALSE; 
$config['sess_time_to_update'] = 300; 
$config['sess_regenerate_destroy'] = FALSE; 

if ((isset($_COOKIE['autologin']) && $_COOKIE['autologin'] == 1) || (isset($_POST['autologin']) && $_POST['autologin'] == 1)) 
{ 
    $config['sess_expiration']  = 31536000; 
    $config['sess_expire_on_close'] = FALSE; 
} 
else 
{ 
    $config['sess_expiration']  = 0; 
    $config['sess_expire_on_close'] = TRUE; 
}