我的网络应用程序中的会话变量有问题。问题是我用下面的代码设置它并检查它是否存在,只有如果不存在,我才更新它。
这个想法是为了知道用户是否是他的会话的企业。
我使用以下代码:
$logo_class = "logo";
if(!Yii::app()->user->isGuest) {
define("ENT_LIM_PROD_COUNT", 10000);
$user_id = Stores::model()->findByPk(Products::model()->getStoreID())->user_id;
if(array_key_exists('is_enterprise', Yii::app()->session)) {
if(Yii::app()->session['is_enterprise'] === true)
$logo_class = "logo_ent";
} else {
$total_prod = LicenseMngr::getFeatureAllocTotal($user_id, LicenseMngr::FEATURE_PRODUCTS);
Yii::app()->session['is_enterprise'] = ($total_prod > ENT_LIM_PROD_COUNT ? true : false);
if(Yii::app()->session['is_enterprise'] === true)
$logo_class = "logo_ent";
}
}
我尝试在我的配置文件中使用不同类型的会话,现在它是:
'session'=>array(
'autoStart' => true,
'sessionName' => 'session',
'timeout' => 30758400
),
现在,问题是每次我刷新页面时,索引“is_enterprise”都不在会话数组中,就好像它从未设置过一样。
我尝试将会话保存目录更改为 /var/tmp。
我在跑:
Darwin niflheim 12.3.0 Darwin Kernel Version 12.3.0: Sun Jan 6 22:37:10 PST 2013; root:xnu-2050.22.13~1/RELEASE_X86_64 x86_64
PHP Version 5.4.15 (web)
以下行对服务器进行休息调用以获取我们需要的信息(这可能是这里唯一与 YII 无关的东西):
$total_prod = LicenseMngr::getFeatureAllocTotal($user_id, LicenseMngr::FEATURE_PRODUCTS);
PS:这不是它发生的唯一自定义变量,我希望这会有所帮助。