阻止会话重新创建页面

时间:2014-02-21 05:00:39

标签: php session yii

我开发了一个页面。每当用户访问该页面时,都会创建一个会话。现在,如果用户在浏览器的两个不同选项卡中打开同一页面,则会创建两个具有不同名称的会话。

我正在使用

public function actionSessionCreate(){
    do {
        $sessionName=  uniqid();
    }while (isset(Yii::app()->session[$sessionName]));
    Yii::app()->session[$sessionName]='any value';
}

用于创建会话名称。 到现在为止它正常工作。

但我可以预见的问题是,如果用户只刷新页面,那么它也会为此创建一个新会话。而且如果用户只是来回移动,将会一次又一次地创建一个新会话 那么我该如何解决这个问题呢?

My logic:-我正在考虑在URL中发送一个标识符,该标识符将在创建会话名称时使用。因此,如果用户只刷新同一页面,它将检查包含标识符的任何会话名称。如果找到它,它将不会创建会话。否则它会创建它。

我应该遵循这个逻辑吗?或者我不应该参加这样的会议?

1 个答案:

答案 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);