2017-08-03 44 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; 
}