0

クライアントのサイト用のチャット スクリプトを既に作成しています。ユーザーがログインしたら、セッションを設定し、チャット ステータスを 1 に設定してデータベースのテーブルを更新します。ユーザーがログアウトしたら、チャット ステータスを 0 に設定します。さらに、ユーザーがブラウザのタブを閉じると、チャット ステータスは 0 に設定され、それ以上チャットは行われません。

ここでの主な問題は、ユーザーのコンピューターがシャットダウンされた場合や電源が切断された場合に、ユーザーがチャットに使用できないことを検出する方法です。または、ユーザーが新しいタブを開き、タブを閉じる代わりにブラウザを閉じたとしても?

ハマった。前もって感謝します

4

2 に答える 2

0

phpmyadmin を使用して MYSQL でイベントを作成し、1 分ごとに status = 0 にするだけです (login_table set status = '0' を更新)。

次に、SetInterval を作成して status = 1 を 30 秒ごとに更新します。

別の SetInterval を作成して status = 1 を確認し、すべてを DIV に取得します (これにより、オンライン ユーザーが表示されます。

于 2013-11-11T13:38:00.600 に答える
0

多かれ少なかれジョンレイモスが言ったこと。これが PHP ベースのチャットであ​​る場合、接続が強制的に閉じられたときなどを簡単に知ることはできません。チャットのタイムアウトを設定するための何らかの方法を用意するだけです。

IE: クライアントからのリクエストが数分間、または数時間もない場合は、接続されていないと見なしても安全です。その後、チャット ステータスを 0 に設定できます。

アップデート:

申し訳ありませんが、あなたの新しいコメントを見ていませんでした。他のページを見ると…

session_start();
// set timeout period in seconds
$inactive = 600;
// check to see if $_SESSION['timeout'] is set
if(isset($_SESSION['timeout']) ) {
    $session_life = time() - $_SESSION['timeout'];
    if($session_life > $inactive)
    { session_destroy(); header("Location: logoutpage.php"); }
}
$_SESSION['timeout'] = time();

もう一度お詫びします。まだスタックオーバーフローに慣れています。

于 2012-10-14T07:30:52.110 に答える