php实现发送留言
PHP实现发送留言功能
数据库准备 创建数据库表存储留言信息,例如:
CREATE TABLE messages (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
HTML表单设计 创建留言表单页面(message_form.html):
<form action="submit_message.php" method="post">
<input type="text" name="name" placeholder="姓名" required>
<input type="email" name="email" placeholder="邮箱" required>
<textarea name="content" placeholder="留言内容" required></textarea>
<button type="submit">提交留言</button>
</form>
PHP处理脚本 创建处理脚本(submit_message.php):

<?php
// 连接数据库
$db = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
// 获取表单数据
$name = $_POST['name'];
$email = $_POST['email'];
$content = $_POST['content'];
// 防止SQL注入
$stmt = $db->prepare("INSERT INTO messages (name, email, content) VALUES (?, ?, ?)");
$stmt->execute([$name, $email, $content]);
// 返回成功信息
header('Location: message_form.html?status=success');
exit();
?>
数据验证增强 在PHP脚本中添加数据验证:
// 验证邮箱格式
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
die("无效的邮箱格式");
}
// 验证内容长度
if (strlen($content) < 10) {
die("留言内容太短");
}
安全防护措施 添加CSRF防护和XSS过滤:

// 生成CSRF令牌
session_start();
if (empty($_SESSION['token'])) {
$_SESSION['token'] = bin2hex(random_bytes(32));
}
// 验证CSRF令牌
if (!hash_equals($_SESSION['token'], $_POST['token'])) {
die("非法请求");
}
// XSS过滤
$name = htmlspecialchars($name, ENT_QUOTES);
$content = htmlspecialchars($content, ENT_QUOTES);
完整流程
- 用户访问message_form.html填写表单
- 表单提交到submit_message.php处理
- PHP脚本验证数据并存入数据库
- 返回结果给用户
错误处理 添加try-catch块处理数据库异常:
try {
$stmt->execute([$name, $email, $content]);
} catch (PDOException $e) {
error_log($e->getMessage());
die("留言提交失败,请稍后再试");
}






