首页 > 解决方案 > 问题 YII2 会话销毁不起作用

问题描述

我有个问题。在 Yii2 中,我有一个视图、控制器和布局。在布局和视图中,如果活动做某事,我会检查会话。代码是这样的:

if (!isset($session)) $session = Yii::$app->session;
if ($session->isActive && $session->has('username')):
   //some code here if there is session echo something
else:
  //some code here if there is no session echo something else
endif;

然后我有一个控制器动作,它破坏会话但也重定向到上面的视图文件,代码是这样的:

public function actionDestroysess($status = 1) {
        Yii::$app->session->destroy();
        return $this->render('masuk', ['status' => $status]);
}

问题是,视图中的会话条件返回真,这意味着Yii::$app->session->destroy();根本不工作,我试图var_dump(Yii::$app->session->get('username));在销毁命令下方的控制器上,但仍然得到值。帮帮我,为什么这个会话销毁不起作用?

标签: sessionyii2

解决方案


试试这个:改变

Yii::$app->session->destroy();

Yii::$app->getSession()->destroy();

如果要删除确切的会话,则必须使用:

Yii::$app->session->remove('name')

推荐阅读