ホームページ >バックエンド開発 >PHPチュートリアル >JavaScript - ユーザーが一定時間操作しない場合にシステムが自動的に終了するように PHP で実装する方法

JavaScript - ユーザーが一定時間操作しない場合にシステムが自動的に終了するように PHP で実装する方法

WBOY
WBOYオリジナル
2016-08-08 09:06:371755ブラウズ

質問者はthinkphpを使って開発していますが、既存の機能では(ユーザーの操作の有無に関わらず)一定時間内にセッションを終了することは可能ですが、この場合は確実にエクスペリエンスが悪くなります

業界ではユーザーが操作を行ったかどうかを判断する場合、一般的にどのような状況を指しますか? 1. マウスがしばらく動かないのですが? 2. マウスのクリック操作はありませんか?
3...

js を使用してこれらの操作を Cookie に記録し、Cookie の有効期限を設定できます。ただし、Cookie の有効期限が切れた場合はどうすればよいですか?

返信内容:

質問者はthinkphpを使って開発していますが、既存の機能では(ユーザーの操作の有無に関わらず)一定時間内にセッションを終了することは可能ですが、この場合は確実にエクスペリエンスが悪くなります

業界ではユーザーが操作を行ったかどうかを判断する場合、一般的にどのような状況を指しますか?

1. マウスがしばらく動かないのですが?

2. マウスのクリック操作はありませんか? 3...
js を使用してこれらの操作を Cookie に記録し、Cookie の有効期限を設定できます。ただし、Cookie の有効期限が切れた場合はどうすればよいですか?

オプション 1

サーバー側の実装原則: ユーザー テーブルにレコード アクセス タイムスタンプを設定します。ユーザーがログインするときに、ログイン許可が必要なページにアクセスするたびに、現在のタイムスタンプと必要な非アクティブ期間を書き込みます。フィールドの時刻は現在時刻より大きいか? 大きい場合は、操作が進行中であることを意味し、操作なしで終了するまでに必要な時間にタイムスタンプが追加され、フィールドが再度更新されます。または、データベース レコードの代わりにセッションを使用します。

オプション 2

HTML5 ストレージまたは Cookie を使用するフロントエンドの実装原理は最初のオプションと同じですが、ストレージ方法が変更されています。

プランの比較
プラン1のデータベースストレージはパフォーマンスの点で適しておらず、HTML5は下位バージョンのブラウザと互換性がなく、Cookieが無効になっている場合はjsが無効になります。したがって、セッションの方が適切です。


私がやったのは、ユーザーがログインしてから15分間操作がなかった場合に自動的にログアウトするというものです。マウスが動いているかどうかには焦点を当てておらず、すべてはマウスがクリックされたかどうか、またはページが更新されたかどうかによって決まります。設定
で削除できます。あくまでご参考までに

一般に、操作があるかどうかは、アクセス要求があるかどうかを指します。要求がある場合、バックエンドは Cookie を更新し、Cookie を使用して有効期限を制御できます。 cookie过期的时候直接把cookie

もちろん、セッションを使用する方が安全です。セッションを使用してリクエストの時間を記録し、新しいリクエストを行うときに期限切れかどうかを判断します。フロントエンドが強制終了したい場合は、ハートビート信号を使用できます (もちろん、ハートビート信号ではリクエスト時間を記録できません)。

つまり、2 つの方法を組み合わせることもできます。使い方はさまざまです。

セッションの有効期限は php.ini で設定されます。時間を超えた後にアクションが実行されない場合、cli は自動的に

します。

通常、フロントエンドのグローバル イベント監視では、ユーザー セッションが中断されないように、イベントがトリガーされるたびに AJAX がセッションを呼び出します。それ以外の場合は、操作が行われず、php.ini のセッション有効期限を超えると解放されます。

自杀

いじらないでください。ここに既製のものがあります:

https://github.com/thorst/jqu...

アイドル状態に入り、アクティベーション状態を再アクティブ化するためのコールバックがあります。アイドル状態に入るときに、サーバーに xhr を送信してセッションを終了します。

通常、これはバックグラウンド制御であり、セッションのタイムアウトを設定します。

ユーザーの操作制限時間はSESSIONのライフサイクルです。セッションサイクルが24分であると仮定すると、ユーザーが12:00にログインし、12:24以降に操作を行わなかった場合、SESSIONは終了します。現時点では無効であるため、操作は再度実行され、再度ログインが要求されます。制限は 2 つの操作間の時間差が 24 分を超えることはできません。さらに、COOKIE の有効期限が切れた場合は、SESSION ログインがなく、ユーザーもログインしていない必要があります。PHP のガベージ コレクション メカニズムは、SESSION ファイルを自動的にクリーンアップします。それが redis に保存されている SESSION である場合、redis にも SESSION ファイルがクリーンアップされます。セッション データを破棄する対応する方法。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。