0

そのため、私の現在のタスクは、ユーザーがサインインして、特定のトピックに関する一連のトレーニング ビデオを表示できるサイトに関係しています。これを CodeIgniter 内で開発しました。唯一の問題は、ログインしてセッションを作成すると、そのセッションが数分後に不思議なことに消えてしまい、不思議なことにログインページに戻ってしまうことです (誰かがサインインせずにビデオ ページをトレーニングします。これは、config.php ページのコード ブロックです。

$config['sess_cookie_name'] = 'cc_session';
$config['sess_expiration']  = 0;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']  = 'cc_sessions';
$config['sess_match_ip']    = TRUE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 3000000;

sess_time_to_update が非常に高く設定されているのはなぜですか? 最初はそれが原因だと思い、5 分後にセッションを更新しました。データベースに記録するようにセッションを設定しました。どうか、私に質問して、この問題の真相を解明するのを手伝ってください!

この方法でサーバーに「ping」を送信しているコースページにあるiFrameがあることを指摘する必要があります...

 <iframe id="timerAddEnd" style="display:none;" src="http://www.example.com/course/finish/<?=$course->intKey?>/ping" >
 </iframe>
 <script type="text/javascript">
      var auto_refresh = setInterval( function () 
      { 
           var iframe = document.getElementById('timerAddEnd'); 
           iframe.src = iframe.src; 
      }, 60000); 
      // refresh every minute 
 </script> 

これが犯人でしょうか?これが最初の問題に対する迅速かつ汚い修正になることを望んでいました。

4

3 に答える 3

3

拡張機能 (FirePHP など) がインストールされた Firefox と Firebug を使用していますか? このような設定を行っている場合、Firebug コンソールを開いたり閉じたりすると、ユーザー エージェント文字列が変更され、セッションが CI によって認識されなくなるためです。

私の回避策は、FirePHP を無効にすることでした。ユーザー エージェント文字列をチェックして、デフォルトのブラウザー ユーザー エージェント以外に何か追加があるかどうかを確認してください。簡単に識別できるはずです。ある場合。

于 2012-10-05T07:03:11.913 に答える
0

まあ、これはそれ自体完全な「答え」ではないかもしれませんが、ある種の回避策を思いつきました.

私は、問題が CodeIgniter 処理セッションに関係していることを知っていました...どう言えば...バックグラウンドで実行されているものです。 もともと私は iFrame 内の CI ページを使用していました。システムへのこれらの「ping」が、ロックアウトの原因でした。そのため、私は現在、iFrame 内で通常のフラットな古い PHP ページを使用しています。データベースに接続しますが、それを行うために CI を経由しません。問題のテーブルへの「ping」を取得しますが、セッションを中断しません。

于 2012-10-09T15:48:20.113 に答える