聊天室採用資料庫逐行儲存訊息,本文提供定時刷新訊息框 (lt4.php) 與在線用戶名單 (ltonline.php) 兩個模組程式碼。
<?php
session_start();
include('g_fun.php'); // 含資料庫連線函數 f_connectdb()
f_connectdb();
$tmpi = 0;
$query = "SELECT lt_id, lt_speaker, lt_face, lt_speaked, lt_time, lt_content
FROM lt_t_content
WHERE lt_id > $chat_hh
ORDER BY lt_time";
$res = mysql_query($query, $dbh);
while ($row = mysql_fetch_array($res)) {
// 輸出單筆訊息 HTML (略)
$tmpi = $row['lt_id'];
}
if ($tmpi > $chat_hh) {
$chat_hh = $tmpi; // 更新已讀最大 ID
}
?>
<?php
include('g_fun.php');
f_connectdb();
// 清理超過 500 秒無發言的用戶 (狀態設為 1 離線)
mysql_query("UPDATE lt_t_online SET lt_state = 1 WHERE (NOW() - lt_lasttime) > 500", $dbh);
echo "在線人員信息
";
$res = mysql_query("SELECT lt_username FROM lt_t_online WHERE lt_state = 0", $dbh);
while ($row = mysql_fetch_array($res)) {
echo $row['lt_username'] . "
";
}
?>
lt_t_content:lt_id(PK), lt_speaker, lt_face, lt_speaked, lt_time, lt_contentlt_t_online:lt_username, lt_state(0在線/1離線), lt_lasttime$chat_hh 為 Session 或 JS 傳遞的已讀最大訊息 ID。