2016-12-23 9 views
0

は私が非アクティブの30秒後に設定タイムアウト時にセッション変数が破棄されませんか?

'user' => [ 
      'identityClass' => 'common\models\UserCustomer', 
      'authTimeout' => 30, 
     ], 

に次のコードを持っている、と私は、ログインリンクが表示されたアカウントがログアウトし、ブラウザを示すリフレッシュが、セッションからの表示が残っているいくつかの変数は、私の見解では存在しています。ここで

は、ビューに

<?php 
         $lsproduk = Yii::$app->session['produkcart']; 
         //echo "counter awal Yii::$app->session['counter']"; 
         if(isset (Yii::$app->session['counter'])) 
         { 

          foreach($lsproduk as $key => $produk){ 

           if(VwProdukAgent::find()->where(['produk_agen_id' => $produk->produk_agen_id])->andWhere(['is_active_produk_agent' => false])->count() > 0){ 
            unset($lsproduk[$key]); 
           } 
          } 

          Yii::$app->session['produkcart'] = $lsproduk; 

          $lsproduk = Yii::$app->session['produkcart']; 

          Yii::$app->session['counter'] = count($lsproduk); 

          $counter = Yii::$app->session['counter']; 
          //display total product 
          echo "<span class='cart-count'>$counter</span></a>"; 

         } 
        ?> 

更新数時間で問題を解決できない私の部分のコードです。

私はログアウトボタンを通常押したときと異なり、表示される変数はありません。

あなたの情報私の現在のアプリケーションは電子商取引であり、タイムアウト時に表示される変数はセッションからのカートの総商品です。私は通常ログアウトを押したときとは異なりますが、セッションはログアウト方法で破棄されるのでカートは空です。

何か問題がありますか?それについて私に教えてください。

その後、私はタイムアウトに他のセッション変数を削除することができますどのように

を更新し

+0

'user'コンポーネントの' authTimeout'は他のセッション変数に影響しません。 – Bizley

+0

@Bizleyは説明のためにありがとう、更新された質問:D –

答えて

0

yii\web\Userコンポーネントと同じメカニズムを使用できます。

  1. セッションの有効期限を保持するパラメータを追加します(cartExpireなど)。
  2. カートは現在のタイムスタンプに設定するセッションにこのパラメータを追加作成プラス30秒:
    Yii::$app->getSession()->set('cartExpire', time() + 30);
  3. カートのセッションチェックこのパラメータにアクセスし、それが現在のタイムスタンプ未満だ場合、それはセッションが期限切れとあなたができることを意味しますカートを落とす。
  4. カートが更新されると、このパラメータも30秒間更新されます。
関連する問題