2016-08-22 12 views
1

私はCakePHP 2.4.3を使っていますが、今は30分ほど休止してからログアウトしています。私は、サイトを離れるときでさえ(ブラウザを閉じないで)を2,3時間ほど続けても、セッションが長く続くように(またはFacebookのようにできるだけ無限に)したい。CakePHPでセッションを無限にするにはどうすればいいですか?

私はアプリ/コンフィグ/ core.phpのが、これらのこれまで働いていたのどれに次のことを試してみた:

テスト#1:

Configure::write('Session', array(
     'defaults' => 'php', 
     'timeout' => 60, // The session will timeout after 60 minutes of inactivity 
     'cookieTimeout' => 4320, // The session cookie will live for at most 3 days, this does not effect session timeouts 
     'checkAgent' => false, 
     'autoRegenerate' => true, // causes the session expiration time to reset on each page load 
    )); 

テスト#2:

Configure::write('Session', array(
     'defaults' => 'php', 
     'timeout' => 2160, // 36 hours 
     'ini' => array(
      'session.gc_maxlifetime' => 129600 // 36 hours 
     ) 
    )); 

試験番号3:

Configure::write('Session', array(
      'defaults' => 'php', 
      'cookieTimeout' => 0 
    )); 
Configure::write('Security.level', 'medium'); 

cakephpサイトのスクリプト自体が動作しないとき(テスト2)、何が起こっているのか分かりません。私はログインし、他のサイトをチェックしてから1時間後にそれに戻ってログアウトします。 CakePHPでセッションを無限にするにはどうしたらいいですか? AppControllerでのごafterFilterアクションでこれを入れ

+0

あなたのタイムアウトに達する前に、PHPはセッションをフラッシュします。これは、共有ホスティングマシンと大量のトラフィックで発生する可能性があります。私は通常セッションを保存するために独自のディレクトリを使います: 'session_save_path( '/ path/to/www/session.collection')'。 –

答えて

0

の$ this - >セッション - >更新();

これは、無限のセッションクッキーを更新します。

そうでない場合は、コードの下にしようと、

'Session' => [ 
     'defaults' => 'database', 
     'timeout'=>2441, 

    ], 

は、要件ごとにタイムアウトを追加します。

それはあなたのプロジェクトのcore.phpのファイルにコードの下にこれを入れて

+0

コントローラアクションが実行されてレンダリングされた後にafterFilterが呼び出されるため、(コントローラが実行されていない)しばらくサイトを使用しないと、セッションは実行されません。まだ更新されていますか?私は数時間後に戻ってくると、まったく同じ期限切れになるのですか? – Leah

0

を助けるセッションテーブルを作成し、データベースとしてセッションを使用して

がかもしれそれは、セッション格納します

Configure::write('Session', array(
    'defaults' => 'php', 
    'timeout' => 30000, // The session will timeout after 30 minutes of inactivity 
    'cookieTimeout' => 1440, // The session cookie will live for at most 24 hours, this does not effect session timeouts 
    'checkAgent' => false, 
    'autoRegenerate' => true, // causes the session expiration time to reset on each page load 
)); 
+0

これは私のテスト#1と同じではありませんか? – Leah

関連する問題