用 php 和mysql实现留言板需三步:建表(含 id、nickname、content、created_at 字段)、PHP 用 pdo 预处理防 sql 注入 并htmlspecialchars 过滤 xss、 前端 表单提交 + 后端 查询倒序展示,辅以长度限制与空值校验。

用 PHP 和 MySQL 做一个简单留言板,核心就三件事:建 数据库 表、写 后端 逻辑、做 前端 页面。不复杂但容易忽略细节,比如 SQL 注入防护和基础 XSS 过滤。
创建留言数据表
在 MySQL 中新建一个数据库(比如 message_board),然后执行以下建表语句:
CREATE TABLE messages (id INT AUTO_INCREMENT PRIMARY KEY, nickname VARCHAR(50) NOT NULL, content TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
注意字段长度要合理,TEXT 类型适合存较长留言;created_at自动记录时间,省得 PHP 手动写。
PHP 处理留言提交
接收表单 POST 数据时,必须过滤和转义。推荐用 PDO 预处理 防止 sql 注入:
立即学习“PHP 免费学习笔记(深入)”;
- 连接数据库用 PDO,设置错误模式为异常
- 用 prepare() + execute() 插入数据,参数绑定变量
- 对用户输入的留言内容用 htmlspecialchars() 转义 HTML 标签,防基础 XSS
示例代码片段:
$pdo = new PDO("mysql:host=localhost;dbname=message_board;charset=utf8", $user, $pass); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); <p>$stmt = $pdo->prepare("INSERT INTO messages (nickname, content) VALUES (?, ?)"); $stmt->execute([$_POST['nickname'], htmlspecialchars($_POST['content'])]);</p>
显示所有留言
从数据库读取并按时间倒序展示:
- 查询用 select * FROM messages ORDER BY created_at DESC
- 循环 输出时,昵称和留言内容都要过 htmlspecialchars(),避免被插入恶意脚本
- 可加个简单的分页(比如每页 10 条),用 LIMIT offset, size 控制
前端只需一个 form 提交,下面用 while 循环把结果 echo 出来即可,不用框架也能跑得很稳。
基础安全与体验优化
上线前至少补上这几点:
- 表单加 required 属性,前端简单校验必填项
- PHP 端检查 $_POST 是否为空,避免空提交
- 留言内容长度限制(比如 2000 字),用 mb_substr() 截断显示更安全
- 敏感词可简单用 str_replace() 过滤,进阶再上正则或词库
基本上就这些。做完能提交、存储、展示,就是一个可用的最小留言系统。
以上就是 PHP 构建简单留言板教程_PHP 与 MySQL 实现留言功能的详细内容,更多请关注