利用 MySQL 高併發與 PHP 腳本優勢,快速實現一個基於分框架的聊天室:儲存發言、定時刷新顯示、自動清理舊數據,代碼簡潔適合入門學習。
CREATE TABLE chat (
chtime DATETIME,
nick CHAR(10) NOT NULL,
words CHAR(150)
);
main.php 分兩框):
cdisplay.php:顯示最近 15 條,每 5 秒自動刷新speak.php:發言表單提交login.php:輸入暱稱寫 Cookie 跳轉主頁<form action="main.php" method="post">
<input type="text" name="nick" size="20">
<input type="submit" value="登錄">
</form>
<?php setcookie('nick', $nick); ?>
<frameset rows="80%,*">
<frame src="cdisplay.php" name="chatdisplay">
<frame src="speak.php" name="speak">
</frameset>
<meta http-equiv="refresh" content="5;url=cdisplay.php">
<?php
$link = mysql_connect('main', 'root'); // 生產環境請用專用帳號
mysql_select_db('abc');
$res = mysql_query('SELECT * FROM chat ORDER BY chtime');
$rows = mysql_num_rows($res);
$show = min($rows, 15);
mysql_data_seek($res, $rows - $show);
for ($i=0; $i<$show; $i++) {
list($chtime,$nick,$words) = mysql_fetch_row($res);
echo "$chtime $nick: $words<br>";
}
// 保留最近 20 條,刪除更早記錄
if ($rows > 20) {
mysql_data_seek($res, $rows - 20);
list($limtime) = mysql_fetch_row($res);
mysql_query("DELETE FROM chat WHERE chtime < '$limtime'");
}
mysql_close($link);
?>
<?php
if ($words) {
$link = mysql_connect('main', 'root');
mysql_select_db('abc');
$time = date('YmdHis');
mysql_query("INSERT INTO chat (chtime, nick, words) VALUES ('$time', '$nick', '$words')");
mysql_close($link);
}
?>
<form action="speak.php" method="post">
<input type="text" name="words" size="20">
<input type="submit" value="發言">
</form>
online.php)htmlspecialchars)mysqli/PDO 預處理語句防注入本例展示了 PHP+MySQL 快速原型開發能力,生產環境務必強化輸入過濾、連接池、權限最小化與高可用架構。