2016-07-22 7 views
0

1.14 を与えるPHP 5.6のYii ::アプリ() - > USER-> idは時々空の結果をHerokuの のYiiにホストされている

他人誤差のYii ::アプリ() - > USER-> IDを返しますidは時々他の時に空を返します。同じページが読み込まれると、この奇妙な動作が発生します。

は、私はこのコードで

class AdminController extends CController 
{ 
public $partnerCount; 
public $vendorCount; 
public $plantationMarkers; 

public function init() 
{ 
    echo Yii::app()->user->id; 

    if(empty(Yii::app()->user->id)) { 
     echo 'User id empty: '. Yii::app()->user->id; 
     //$this->redirect(Yii::app()->createAbsoluteUrl('admin/auth/login')); 
     exit; 
     return false; 
    } 
    elseif(!Yii::app()->user->checkAccess(User::PARTNER)) { 
     $this->layout = 'column1'; 
     $this->render('/auth/not-authorized'); 
     return false; 
    } 

    $this->partnerCount = $this->getPartnerCount(); 
    $this->vendorCount = $this->getVendorCount(); 

    $this->plantationMarkers = $this->getPlantationMarkers(); 

    return true; 
} 

AdminController.php

と呼ばれる親クラスでこれを確認する「ユーザーID、空:」他のケースでは、私はIDを取得しながら、いくつかのケースではエコーされます。

コードは変更されていませんが、これは他の時代とは異なる時にどうやって動作するのでしょうか。

+0

セッションタイムアウトに関連しないでください。ログの資格情報が期限切れになっています – scaisEdge

+0

もう一度ページをリロードすると、id値がそこにあります。問題は私のローカルインストールが正常に動作している間は英雄のインストールだけです。 – aeonsleo

+0

ちょっとしたコメントです。ユーザがログインしているかどうかをチェックするためにidを評価すべきではありません:Yii :: app() - > user-> isGuest – Eduardo

答えて

0

DBテーブルに格納するセッションを変更して解決しました。私は確かではありませんが、サーバーにHerokuのセッションを保存しているYiiの問題がありました。 変更はconfig配列の 'components'に必須です。

から:

 'session' => array(
      'class' => 'CHttpSession', 
      'timeout' => 2400, 
      'cookieParams' => array(
        'httpOnly' => true, 
        'secure' => false, 
      ), 
    ), 

へ:

 'session' => array(
      'timeout' => 2400, 
      'cookieParams' => array(
        'httpOnly' => true, 
        'secure' => false, 
      ), 
      'class' => 'CDbHttpSession', 
      'connectionID' => 'db', 
      'sessionTableName' => 'lig_session', 
    ), 
+0

ユーザセッションを開始するコードの部分を共有すると面白いでしょう – Eduardo

関連する問題