2014-02-21 130 views
0

我開發了一個頁面。每當用戶訪問該頁面時,都會創建一個會話。現在,如果用戶在瀏覽器的兩個不同選項卡中打開同一頁面,則會創建兩個不同名稱的會話。阻止會話重新創建頁面

我使用

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

創建會話名稱。 直到現在它的工作正常。

但我可以預見的問題是,如果用戶只是刷新頁面,那麼它也會爲此創建一個新的會話。而且,如果用戶只是來回移動,則會一次又一次地創建新的會話。
那麼我該如何解決這個問題?

My logic:-我想在創建會話名稱時使用的URL中發送一個標識符。如果用戶只刷新同一頁面,它將檢查包含標識符的任何會話名稱。如果發現它,它不會創建會話。否則它會創建它。

我該用這個邏輯嗎?或者我不應該玩這樣的會議?

+0

沒有你創建新的前檢查會議? –

+0

我不能檢查會話的名稱,因爲會話名稱不會從一個頁面傳遞到另一個頁面。它僅在該頁面上創建,並且也具有唯一的名稱。當用戶刷新頁面時,我也失去了會話的名稱。 –

+0

id您的控制器和操作具有唯一的名稱,您可以使用它們 –

回答

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); 
相關問題