我开发了一个页面。每当用户访问该页面时,都会创建一个会话。现在,如果用户在浏览器的两个不同选项卡中打开同一页面,则会创建两个具有不同名称的会话。
我正在使用
public function actionSessionCreate(){
do {
$sessionName= uniqid();
}while (isset(Yii::app()->session[$sessionName]));
Yii::app()->session[$sessionName]='any value';
}
用于创建会话名称。
到现在为止它正常工作。
但我可以预见的问题是,如果用户只刷新页面,那么它也会为此创建一个新会话。而且如果用户只是来回移动,将会一次又一次地创建一个新会话
那么我该如何解决这个问题呢?
My logic:-
我正在考虑在URL中发送一个标识符,该标识符将在创建会话名称时使用。因此,如果用户只刷新同一页面,它将检查包含标识符的任何会话名称。如果找到它,它将不会创建会话。否则它会创建它。
我应该遵循这个逻辑吗?或者我不应该参加这样的会议?
答案 0 :(得分:0)
试试这个,
if(!Yii::app()->user->hasState($sessionName)){ //checking whether the session occurs
Yii::app()->user->setState($sessionName,"value"); //setting the session variable
}
用于访问会话变量
Yii::app()->user->getState($sessionName);