1

ajaxクエリなどのPHPセッションに関するスレッドがたくさんあることは知っていますが、私の問題は、

ajaxグリッド(ページの読み込み後にビルド)があり、使用がログオンしている場合にのみ編集できます。ユーザーが実際にページを変更するまで(その後呼び出されるまで)セッションがチェックされなくてもかまいませんがvalid_session.php、翌日ユーザーが同じページでブラウザーを開いたときに問題が発生します-グリッドはまだ編集可能です!明らかに、ページを更新すると、ユーザーはログアウトされます。

ページにキャッシュを設定していませんが、ブラウザ(特にChrome)は開いたときにキャッシュをリロードしません。

再開時に強制的に更新する方法として頭を悩ませることはできません。私を正しい方向に導いてください...


編集

ところで-私はこれを処理する方法を見つけました。私は単に経由session_destroy();session_destroy.phpて呼び出します:unload()$.get()

$(window).unload(function() {
    $.get('session_destroy.php', function(data) {
      alert(data); // alerts me of some var set to 0 - meaning session is destroyed.
    });
});
4

2 に答える 2

2

ユーザーを積極的にログアウトするには、何らかのポーリングを実行し、セッションの有効期限が切れたときに自動的にログアウトをトリガーする必要があると思います。または、「セッションの有効期限が切れているため、このページに加えられた変更は保存されません」などのエラーメッセージを出力します。明らかに、グリッドはセッションが期限切れになったことを「魔法で」知ることはできません。どういうわけかそれを伝える必要があります。いずれにせよ、グリッドがまだ編集可能であっても、変更を保存することは不可能です。そうしないと、設計上の欠陥があります(保存する前にユーザーがログインしているかどうかを確認しないなど)。

于 2012-06-07T12:11:56.827 に答える
1

1 つの解決策は、「最後に更新された」Cookie を設定しsetInterval()、Cookie が 20 分以上経過しているかどうかを確認する JavaScript を使用することです。そうである場合、JavaScript は更新をトリガーします。もちろん、非アクティブ期間の後もログアウトする必要があります。

于 2012-06-07T12:13:25.007 に答える