だから私は自分のサイトでどのユーザーがオンラインであるかを示すテーブルを作成しようとしています。誰かが最初にログアウトせずにサイトを閉じた場合、ログインしたままテーブルにとどまる部分を除いて、すべてが機能しています。私の状況を説明しようとします私ができる最高の。
online
私のデータベースには、ログイン時にonline
ステータスが1に設定され、ログアウトをクリックすると0に設定されたユーザーテーブルがあります。online
これは、誰かが10分間非アクティブになった場合に、使用しようとしているコードです。ログアウト(online
0に設定)
<?php
session_start();
$timeout = 10; // Set timeout minutes
$logout_redirect_url = "logout.php"; // Set logout URL
$timeout = $timeout * 60; // Converts minutes to seconds
if (isset($_SESSION['last_activity'])) {
$elapsed_time = time() - $_SESSION['last_activity'];
if ($elapsed_time >= $timeout) {
mysql_query("UPDATE users SET online = 0 WHERE username = '".$_SESSION['username']."'")
or die(mysql_error());
session_destroy();
header("Location: $logout_redirect_url");
}
}
$_SESSION['last_activity'] = time();
?>
これは正常に機能し、10分間待つとログアウトしますが、ブラウザを閉じるだけでonline
= 1のままになり、リストに表示されます。
問題は、ユーザーを更新しonline
て0に設定する前に、セッションを破棄するブラウザーを閉じることです。
とにかくこれの周りにありますか?助けていただければ幸いです:)
ところで、私はもうmysqlを使用しないことを知っており、すべてを理解し、最初にすべてを機能させるようになったら、別のものに切り替えようとします。