php实现提交留言
PHP 实现提交留言功能
创建 HTML 表单
创建一个简单的 HTML 表单,用于用户输入留言内容。表单需要包含姓名、邮箱和留言内容字段,并设置 method="post" 提交到 PHP 处理页面。
<form action="submit_message.php" method="post">
<label for="name">姓名:</label>
<input type="text" id="name" name="name" required>
<label for="email">邮箱:</label>
<input type="email" id="email" name="email" required>
<label for="message">留言内容:</label>
<textarea id="message" name="message" required></textarea>
<button type="submit">提交留言</button>
</form>
处理表单提交的 PHP 代码
创建一个名为 submit_message.php 的文件,用于接收表单数据并进行处理。首先验证数据,然后将留言存储到数据库或文件中。
<?php
// 检查表单是否通过 POST 方法提交
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// 获取表单数据并转义特殊字符
$name = htmlspecialchars($_POST["name"]);
$email = htmlspecialchars($_POST["email"]);
$message = htmlspecialchars($_POST["message"]);
// 验证邮箱格式
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
die("邮箱格式不正确");
}
// 连接数据库(以 MySQL 为例)
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database_name";
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查数据库连接
if ($conn->connect_error) {
die("数据库连接失败: " . $conn->connect_error);
}
// 准备 SQL 语句并绑定参数
$stmt = $conn->prepare("INSERT INTO messages (name, email, message) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $name, $email, $message);
// 执行 SQL 语句
if ($stmt->execute()) {
echo "留言提交成功";
} else {
echo "留言提交失败: " . $stmt->error;
}
// 关闭数据库连接
$stmt->close();
$conn->close();
}
?>
存储留言到文件
如果不使用数据库,可以将留言存储到文本文件中。
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = htmlspecialchars($_POST["name"]);
$email = htmlspecialchars($_POST["email"]);
$message = htmlspecialchars($_POST["message"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
die("邮箱格式不正确");
}
// 将留言数据写入文件
$data = "姓名: $name\n邮箱: $email\n留言: $message\n\n";
file_put_contents("messages.txt", $data, FILE_APPEND);
echo "留言提交成功";
}
?>
显示留言列表
创建一个页面显示所有留言,从数据库或文件中读取数据并展示。
<?php
// 从数据库读取留言
$conn = new mysqli("localhost", "username", "password", "database_name");
if ($conn->connect_error) {
die("数据库连接失败: " . $conn->connect_error);
}
$result = $conn->query("SELECT name, email, message FROM messages ORDER BY id DESC");
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo "<div>";
echo "<h3>" . htmlspecialchars($row["name"]) . "</h3>";
echo "<p>" . htmlspecialchars($row["email"]) . "</p>";
echo "<p>" . htmlspecialchars($row["message"]) . "</p>";
echo "</div>";
}
} else {
echo "暂无留言";
}
$conn->close();
?>
安全注意事项
确保对用户输入进行验证和转义,防止 SQL 注入和 XSS 攻击。使用 htmlspecialchars() 函数转义输出内容,并使用预处理语句处理数据库查询。







