1

データベースに「ログ」というテーブルがあります。このログ テーブルには、ID、ユーザー名、LoginTime、および LogoutTime が含まれます。それで全部です。

ID、Username、および LoginTime 列に INSERT するのは本当に簡単です...

しかし、LogoutTime を扱うとき、2 つの条件があると考えていました。

  1. ユーザーがログアウト ボタンをクリックする >> 問題は解決しました。LogoutTime 列を処理するために、logout.php に INSERT スクリプトを簡単に配置できます。

  2. ユーザーは、ブラウザの閉じるボタンをクリックして私のウェブサイトから逃げるだけです >> これは問題を引き起こします。このような状況で LogoutTime 列にどのように書き込むことができますか?

PHPだけで扱えますか?つまり、jQueryを使用する必要はありません...前にありがとう。

4

3 に答える 3

3

これを行うための最も一般的な解決策は、タイムアウトを使用することです。そのため、アクティブでなくなったユーザーがいるかどうかを確認する cron を定期的に実行します。たとえば、過去 30 分間に要求が行われていない可能性があります。次に、その時点でのログアウト時間を追加します。

したがって、すべてのアクションはユーザー セッションを最後のリクエスト時間で更新するため、タイムアウトがいつ発生するかがわかります。

閉じるブラウザーを 100% 制御することはできません。たとえば、クライアント コンピュータの電源障害について考えてみてください。確実に何も返されません。

于 2012-06-16T09:25:21.640 に答える
1

IE では、次のようなことを試すことができます。

< body onbeforeunload="alert('Closed!');">
于 2012-06-16T09:24:41.017 に答える
1

これに似たものを実装できますが、必要に応じて時間が異なる場合があります

if (isset($_SESSION['browser_last_activity']) && (time() - $_SESSION['browser_last_activity'] > 1800)) {
    // request 30 minates ago
    // set the logout time here
}
$_SESSION['browser_last_activity'] = time(); // update last activity time

しかし、PHP で要件を 100% 満たす機能を実装する方法はありません。

また、javascript を使用して試すことができますonbeforeunload。オーバーヘッドの理由から、php ではなく javascript を使用するよりも良い方法です。

于 2012-06-16T09:31:15.367 に答える