2013-08-12 379 views
0

我正在創建電子商務應用程序,並通過使用該應用程序用戶可以創建自己的電子商務商店,如bigcommerce。因此,我將$_SESSION['store_id']用於每個商店,並在整個應用程序中使用該變量來控制商店。PHP:會話變量被覆蓋

現在,問題是用戶無法在單個瀏覽器上訪問多個商店,因爲$_SESSION['store_id']正在被覆蓋。 我知道PHP會話變量就像任何其他數組,所以如果密鑰相同,那麼它將覆蓋相應密鑰的值。但是,我該如何解決這個問題? 我應該創建動態PHP會話變量嗎?

爲了您的信息,我的應用程序幾乎完成了使用Yii框架,所以它非常難以硬編碼。

+2

這個鍵怎麼樣?然後'if(!in_array($ value,$ _SESSION ['store_id'])){$ _SESSION ['store_id'] [] = $ value; ''或者類似的東西。 – BlitZ

+0

@CORRUPT如果我將該數組用於該鍵,則必須對整個應用程序進行硬編碼。 –

+1

我認爲在會話中存儲當前訪問的商店是一個糟糕的舉動(您已經列舉了主要問題:使用訪問另一家商店時會話數據被刪除)。我認爲每個商店都必須有一個唯一的URL slug或id(http://domain.com/my-supa-store-01/或http://domain.com/store/12)來標識它們。 – 0xBAADF00D

回答

1

你可以嘗試通過關鍵

$_SESSION['stores'] = array(
    'store_id' => 'session data' 
); 
+0

@CORRUPT擊敗了我 – tlenss

0

您可以按以下方式使用會話存儲的列表存儲商店

  session_start() 
      if(! isset($_SESSION['list_of_store'])) 
       { 
      $_SESSION['list_of_store']=array('0'=>$store_id) 
       } 
      else 
      { 
      $stores=$_SESSION['list_of_store']; 
      $stores[]=$store_id; 
      $_SESSION['list_of_store']=$stores; 

      } 
0

你可以嘗試推行某種形式的「鑰匙串」 - 按鈕,即包括特定人員是管理員的所有商店。 如果你想管理另一家商店,他/她可以點擊鑰匙鏈按鈕並選擇管理員的商店。