Yii:有什么办法可以在注销后保持会话不清晰

Yii: Does any way to keep the session unclear after logout

我使用会话值来检查当前语言,但我们注销后,所有会话值都被清除并且语言更改为默认语言。以任何方式在注销后保持会话不清晰。

我认为这不太确定。 使用 Yii::app()->user->logout(false)。它只会从会话中删除与身份验证相关的信息,并保持其他数据完整无缺。

使用会话来存储语言不是一个好的选择(真相是最糟糕的)。

那用什么?

您应该要么使用 cookies,因为语言不重要或机密数据(我认为如此)。即使用户不知何故丢失了他 select 所使用的语言,他也可以 select 再次使用它,并且所有这些都将存储在 cookie 中,只要你愿意。要了解有关 Yii 中 cookie 的更多信息,请单击 here

但是如果

你出于某种原因讨厌饼干(虽然我只会推荐饼干) 第二个选项是 在每个请求中附加语言 url,例如 ?lang=en。这可能是一个棘手的问题,因为您必须在每个请求和 url.

中处理此参数

如何在用户注销后保持当前语言?

您可以使用 setComponent() 方法动态设置应用程序组件。 尝试创建一个方法,比如:

public function setLanguage(){
 // When User log in  is success, raise a flag, and set in by:
 // Or more specifically, donot copy and paste it, at least give some research and do it something like this.
  Yii::app()->setComponent('language','en');
}

并使用它,通过 Yii::app()->language;

因此,您可以在此处动态设置和重置您的语言组件。 正如Let me see所说,对语言使用会话不是一个好的选择。