まず、これはPHPの関連する質問です:オンラインオフラインステータス しかし、私のアプローチは少し異なり、問題もあるので、新しい質問の方が良いと思いました。
ここで、「online」と呼ばれるqa_usersテーブルに1つの列を追加しました。これは、ロギング時間を挿入/更新し、ユーザーの操作時に更新を維持します(正しいかどうかはわかりません)
現在、ユーザーはログインするとすぐにオンラインで表示されますが、問題はログアウト後もオンラインとして表示状態を維持し、オフライン状態になることはありません。
時間比較の条件付きコードに何か問題があると思いますが、何がわかりません。
私が使用しているコードを以下に見つけてください。
$loggedtime = date('Y-m-d h:i:s', time()-300); // 5 minutes
$query = 'SELECT userid, handle, online FROM ^users ORDER BY userid ASC';
$result = qa_db_query_sub($query);
while($ids = mysql_fetch_array($result)){
$online = $ids['online'];
$userid = qa_get_logged_in_userid();
if(qa_is_logged_in()){
$update = 'UPDATE ^users SET online = NOW() WHERE userid = '.$userid.'';
qa_db_query_sub($update);
}
$time = $ids['online'];
if ($time >= $loggedtime){ // i have tried with $loggedtime > $time too
echo '<li>'.$ids['handle'].' online</li>';
} else {
echo '<li>'.$ids['handle'].' offline</li>';
}
}