【发布时间】:2014-03-22 10:46:58
【问题描述】:
我开发了一个页面。每当用户访问该页面时,都会创建一个会话。现在,如果用户在浏览器的两个不同选项卡中打开同一页面,则会创建两个不同名称的会话。
我正在使用
public function actionSessionCreate(){
do {
$sessionName= uniqid();
}while (isset(Yii::app()->session[$sessionName]));
Yii::app()->session[$sessionName]='any value';
}
用于创建会话名称。
到目前为止,它工作正常。
但我可以预见的问题是,如果用户只是刷新页面,那么它也会为此创建一个新会话。而且,如果用户只是来回移动,则会一次又一次地创建一个新会话。
那么我该如何解决这个问题呢?
My logic:- 我正在考虑在 URL 中发送一个标识符,该标识符将在创建会话名称时使用。因此,如果用户只是刷新同一页面,它将检查包含标识符的任何会话名称。如果找到它,它将不会创建会话。否则它将创建它。
我应该遵循这个逻辑吗?或者我不应该玩这样的会话?
【问题讨论】:
-
您在创建新会话之前检查过会话吗?
-
我无法检查会话名称,因为会话名称没有从一页传递到另一页。它仅在该页面上创建,并且具有唯一名称。当用户刷新页面时,我也会丢失会话的名称。
-
id 你的控制器和动作有一个唯一的名字,你可以使用它们