2015-12-17 89 views
2

與蓄能作爲被處理的配置文件會Yii框架工作如下:Yii的會話存儲,壽命和餅乾

 'session' => array(
     //'sessionName' => 'SomeSession', 
     'class' => 'CDbHttpSession', 
     'connectionID' => 'SomeConnection', 
     'autoCreateSessionTable' => false, 
     'sessionTableName' => 'SomeTable', 
     'autoStart' => 'false', 
     'cookieMode' => 'only', 
     'useTransparentSessionID' => false, 
     'timeout' => CSESSIONTIMEOUT, 
     'cookieParams' => array(
      'path' => '/', 
      'domain' => '.somedomain.extension', 
      'expire' => time()+5256000, 
      'lifetime' => time()+5256000, 
      //'httpOnly' => true, 
     ), 
    ), 

所以當你看到會話存儲在數據庫表中給定的一生。但是,如果我檢查數據庫中存儲的會話,它們不會在給定的生命週期內存儲,它們將以一年的生命週期進行存儲。

我在我們的應用程序中可以找到的唯一一件有一年一生的cookie是。例如像這樣:

setcookie("cookie_name", $someValue, time()+31536000, "/", "somedomain"); 

什麼使我困惑的是我們的應用程序中的cookie。這可能會覆蓋Yii會話存儲配置嗎?

UPDATE

我也碰到這行代碼

$_SESSION['POLL_'.$idPoll.'somekey'] = strtotime("now"); 

而該行代碼插入到數據庫中的會話記錄。但是這個紀錄也有一年的生命。這怎麼可能?

回答

0

您需要添加timeout參數去配置是這樣的:

'session' => array(
     'class' => 'CDbHttpSession', 
     'timeout' => 5256000, 
     // ... 
+0

以上康斯坦斯定義,但我會嘗試你的建議 – PimD1988

+0

@ PimD1988我檢查。在表**會話**設置過期值+ 5256000 –

+0

是的,但重點是會話存儲的時間比定義的更長,一年實際上不是我想要發生的事情。 – PimD1988

0
Try Cookies Like this : - 
if (isset($_POST['remember'])) { 
      $cookieUsername = new CHttpCookie('phoenix_admin_username', $_POST['LoginForm']['username']); 
      $cookiePassword = new CHttpCookie('phoenix_admin_password', base64_encode($_POST['LoginForm']['password'])); 
      $cookieUsername->expire = time() + 604800; 
      $cookiePassword->expire = time() + 604800; 
      Yii::app()->request->cookies['phoenix_admin_username'] = $cookieUsername; 
      Yii::app()->request->cookies['phoenix_admin_password'] = $cookiePassword; 
} 

    ////////////Check like this////////////// 

    if(isset(Yii::app()->request->cookies['phoenix_admin_username'])){ 
     $model->username = Yii::app()->request->cookies['phoenix_admin_username']->value; 
     $model->password = base64_decode(Yii::app()->request->cookies['phoenix_admin_password']->value); 
    }else{ 
     $model->username = ""; 
     $model->password = ""; 
    }