留言板数据应存入MySQL的messages表,字段包括id(自增主键)、nickname(VARCHAR(20))、content(TEXT)和created_at(DATETIME默认当前时间),不存IP等不可靠字段;PHP需用trim、htmlspecialchars过滤并预处理,mysqli_prepare防注入;前端用fetch提交并更新DOM,显示时统一htmlspecialchars转义防XSS。
留言板数据怎么存,MySQL 表结构怎么设计
直接用文件存留言容易出乱码、并发写入丢数据,必须上数据库。建一张 messages 表就够了,字段别贪多:
-
id:自增主键,INT UNSIGNED AUTO_INCREMENT -
nickname:VARCHAR(20),不强制校验邮箱,昵称够用 -
content:TEXT,支持换行和少量 HTML(后面会过滤) -
created_at:DATETIME DEFAULT CURRENT_TIMESTAMP,别用time()函数拼字符串
别加 ip 或 user_agent 字段——没做登录,这些信息既难验证又容易被伪造,纯属增加维护负担。
PHP 后端怎么接收并插入留言
用 $_POST 接参,但不能直接入库。必须做三件事:过滤、截断、预处理。
- 用
trim()去首尾空格,再用strlen()判断是否为空,空内容直接die("内容不能为空") -
nickname用htmlspecialchars($nick, ENT_QUOTES, 'UTF-8')转义,防 XSS;content同理,但别用strip_tags()——它会删掉合法换行,改用nl2br()配合转义更稳妥 - 插入前用
mysqli_prepare()+bind_param(),参数类型对应好:s(string)给 nickname,s给 content
别手拼 SQL 字符串,哪怕只是测试环境。一句 "INSERT INTO messages VALUES ('" . $_POST['nick'] . "', ...)" 就是 SQL 注入入口。
立即学习“PHP免费学习笔记(深入)”;