2012-01-25 4 views
0

私はこの1つで進歩を遂げることはできません。 CIセッションの設定は次のとおりです。CI 2.0.3セッションheisenbug:セッションは20分後に失われます。サーバーのリダイレクト時にのみ、ログには何も疑いがありません。

$config['sess_cookie_name']  = 'ci_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']  = 'ci_sessions'; 
$config['sess_match_ip']  = FALSE; 
$config['sess_match_useragent'] = FALSE; 
$config['sess_time_to_update'] = 7200; 
$config['cookie_prefix'] = ""; 
$config['cookie_domain'] = ""; 
$config['cookie_path']  = "/"; 
$config['cookie_secure'] = FALSE; 

セッションライブラリは自動読み込み時に読み込まれます。私はsess_update関数を使って、CIフォーラムを読んでいるAJAXのバグを防ぐことができました。

データベース内のテーブルci_sessions照合utf8_general_ciを持っている(そこにすべてのredirect()呼び出しの後、セッションを失ったバグであり、それは、照合は、デフォルトでlatin1_swedish_ciあったという事実にリンクされました)。

管理セクションのユーザーが長い記事を追加して保存ボタンをクリックすると、常に破損します。アクションを保存し、次のようになります。あなたは記事を追加したが上のユーザがログアウトされますリダイレクトされますが、20分以上を費やして保存]をクリックした場合

function save($id = 0){ 
    if($this->my_model->save_article($id)){ 
     $this->session->set_flashdata('message', 'success!'); 
     redirect('admin/article_listing'); 
    }else{ 
     $this->session->set_flashdata('message', 'errors encountered'); 
     redirect('admin/article_add'); 
    } 
} 

私はロギングも有効にしていますが、エラーが発生したときにメッセージの時刻が半分にしかなりませんが、The session cookie data did not match what was expected. This could be a possible hacking attempt.です。残りの半分は何も得られません。セッションコンストラクタの最後に置いたメッセージが表示されます。私のブラウザに保存されているクッキーを見ると、エラーの後、クッキーの最初の部分はハッシュと一致しません。

私はCodeIgniterのネイティブのセッションを使用していない知っているが、また、私が言及するsession.gc_maxlifetime

86400へのもう一つは、私は自分のコンピュータ上ではなく、すべてのエラーを再現することができないんだということです設定しました私がこのバグをテストした他のコンピュータは、上記と同じパターンで表示されます。

次に何をするかについてご意見がありましたら、私は大変ありがとうございます。新しいバージョンに変更するか、ネイティブセッションクラスを使用しています(古いものはCI 1.7のものでしたが、まだ動作しますか?)。

編集:私はCI 2.0.3のセッションクラスと最新のCIセッションクラスの間でdiffを実行しました。それらは同じです。

答えて

0

ここで私はそれを解決しました。標準では、ブラウザがPOSTリクエスト後にリダイレクトを許可しないようにしています。 CIのredirect()メソッドはデフォルトで302リダイレクトを送信しています。論理的なやり方は、私の問題を解決した307リダイレクトを送信することですが、リダイレクトについての確認ダイアログを表示するという警告があります。他のオプションは301(永久に移動されたことを意味する)リダイレクト、または私が選択したソリューション、javascriptのリダイレクトです。

関連する問題