2014-09-06 54 views
1

我想知道這在警予:Yii :: app() - > user-> setState in yii?

Yii::app()->user->setState('key','value'); 

如果我有大小10的陣列和我的狀態設置此陣,如:

Yii::app()->user->setState('data',$dataArray) 

我有大小15000的另一個數組和我把這個數組設置爲:

Yii::app()->user->setState('data',$dataArray) 

這樣好嗎?

或者它會影響我Yii項目的速度,即setState數據量越大,yii項目的速度就越慢?

對於像密碼那樣的機密數據在Yii::app()->user->setState('password',$password)中設置是否安全?

回答

3

由於安全問題變量,不要將密碼存儲在setState中,但是如果您需要使用某些加密。

您可以在這裏看到,該函數的setState使用會話 http://www.yiiframework.com/doc/api/1.1/CWebUser#setState-detail

如您在會議中喜歡,你可以存儲儘可能多的數據。所有會議都存儲在server.There是沒有限制的會話的大小,但到存儲器的限制PHP可以採取:http://ca.php.net/manual/en/ini.core.php#ini.memory-limit

另一個關於會話大量數據非常翔實鏈接

Is it okay to save lots of information in $_SESSION?

感謝

+0

我用setState。當用戶登錄我設置setState中的時區值。但我不知道什麼是問題。當它快速加載,然後完美的作品。但是當它需要太多的時間來加載,然後我沒有在setState中獲得任何價值。請任何幫助。 – Dhara 2015-11-28 06:02:24

+0

@Jazz爲什麼你使用setStateto保存時區值?你能解釋一下嗎,還是我可以看到你的代碼? – 2015-11-29 16:47:54

+0

我想在我的整個項目的時區,所以我設置setState獲取時區值。 – Dhara 2015-11-30 06:29:40

0

請不要保存像的setState功能口令或密碼等用戶個人信息,因爲這是在其中後用戶的身份驗證創建的會話設置您的數據。所以請不要在setState函數中存儲大量數據,它會降低應用程序的性能,無論您的會話是存儲在數據庫中還是存儲在Cookie中。