首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 與 MySQL 建構 BBS 系列(二):文章閱讀頁 look.php 實作

     編輯:PHP 綜合知識

本系列第二部分實作文章閱讀頁 look.php,功能包含:依 id 讀取文章、遞增閱讀計數、顯示主文與回覆、導覽列整合與返回/回覆連結。

核心程式流程

  1. 資料庫連線:include "signup/mysql.inc"
  2. 讀取主文:SELECT * FROM $table WHERE id='$id'
  3. 更新閱讀數:UPDATE $table SET number=number+1 WHERE id='$id'
  4. 輸出 HTML:標題、作者、內容(以 nl2br 處理換行)
  5. 讀取回覆:迴圈查詢 bbs_re 表,最多顯示 5 筆回覆(r1~r5 欄位存放回覆 ID)
  6. 導覽整合:include "js/menuhead.php"、include "js/menu.php"

關鍵程式碼片段

主文讀取與計數更新

<?php
include "signup/mysql.inc";
$sql = "SELECT * FROM $table WHERE id='$id'";
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_array($result);

// 遞增閱讀數
$number = ++$row["number"];
$sql = "UPDATE $table SET number='$number' WHERE id='$id'";
mysql_query($sql) or die(mysql_error());
?>

內容輸出與換行處理

<td width="78%">
  <div align="left"><font size="2" color="#9966FF">
    <?php
    $lines = explode("\n", $row["content"]);
    foreach ($lines as $line) {
        echo "  " . htmlspecialchars($line) . "<BR>";
    }
    ?>
  </font></div>
</td>

回覆巢狀顯示(最多 5 層)

<?php
for ($j = 1; $j < 6; $j++) {
    $re = "r$j";
    if (!empty($row[$re])) {
        $id2 = $row[$re];
        $sql = "SELECT * FROM bbs_re WHERE id='$id2'";
        $result = mysql_query($sql) or die(mysql_error());
        $r = mysql_fetch_array($result);

        // 輸出回覆標題、作者、內容(同主文格式)
        echo "<table width=100% border=1 cellspacing=0 cellpadding=0 bordercolor=#FFCCFF>";
        // ... 略:標題列、作者列、內容列
        echo "</table><BR>";
    }
}
?>

資料表結構推測

主文表以 r1~r5 儲存回覆 ID,形成固定深度的回覆串聯(非遞迴樹狀)。

安全性與現代化重構要點

  1. SQL 注入:$id、$table 直接串入 SQL,必須改用預處理語句(PDO/mysqli)。
  2. XSS 防護:輸出內容需 htmlspecialchars(),原碼僅用 explode 未轉義。
  3. 資料庫 API:mysql_* 已移除,改用 PDO 或 mysqli。
  4. 回覆架構:建議改為 parent_id 遞迴模型,支援無限層回覆與分頁。
  5. 計數更新:可用單一 UPDATE ... SET views = views + 1 WHERE id = ? 避免競態條件。
  6. 模板分離:採用模板引擎或至少將 HTML 移至獨立檔案,減少 PHP/HTML 混雜。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
表格關鍵欄位
bbs_php, bbs_mysql...id, title, userid, content, number, date1, r1~r5
bbs_reid, title, userid, content