首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

PHP + MySQL 實戰:從零構建簡易聊天室(含表設計、分框架與自動清理)

     編輯:MySQL 資料庫相關知識

利用 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 跳轉主頁

二、核心代碼片段

1. login.php(純 HTML 表單)

<form action="main.php" method="post">
  <input type="text" name="nick" size="20">
  <input type="submit" value="登錄">
</form>

2. main.php(框架頁 + Cookie 記錄暱稱)

<?php setcookie('nick', $nick); ?>
<frameset rows="80%,*">
  <frame src="cdisplay.php" name="chatdisplay">
  <frame src="speak.php" name="speak">
</frameset>

3. cdisplay.php(顯示 + 自動清理)

<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);
?>

4. speak.php(寫入發言)

<?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)
  • 表情符號、IP 顯示、XSS 過濾(htmlspecialchars)
  • 改用 mysqli/PDO 預處理語句防注入
  • 引入 WebSocket / Server-Sent Events 替換輪詢

本例展示了 PHP+MySQL 快速原型開發能力,生產環境務必強化輸入過濾、連接池、權限最小化與高可用架構。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved