我的网络应用中的会话变量存在问题。 问题是我用下面的代码设置它并检查它是否存在,只有不存在然后我更新它。
我们的想法是知道用户是否是他的会话的企业。
我使用以下代码:
$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);
P.S:这不是它发生的唯一自定义变量,我希望有所帮助。
答案 0 :(得分:0)
好了所以过了一会儿我们就能解决问题了......显然YII中的会话变量不是数组而是对象,你可以将它作为数组访问,这样array_key_exists就不起作用。
将其更改为isset解决了问题。