记得十几年前的时候,每到春节,各大网站都会建一个祝福墙,上面挂满网友的新年寄语。这些年随着移动互联网的高速发展,web的新春祝福墙越来越少了。今天,咱们就来考考古,用快速原型法进行设计。
采用MySQL数据库。
CREATE DATABASE new_year_wall;
CREATE TABLE greetings (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
message TEXT NOT NULL,
date_posted TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
New Year Greeting Wall
New Year Greeting Wall
";
echo "" . $row['name'] . " posted:
";
echo "" . $row['message'] . "
";
echo "Date posted: " . $row['date_posted'] . "
";
echo "
好了,一个支持任何人直接提交祝福的祝福墙已经完成了。
但是,有经验的程序员一眼就看出来了,有两个很大的漏洞:一是用户不需要登录就可以直接发送祝福,且没有过滤用户提交的内容;而是没有管理功能,无法实现增删查改。
可以看到,上面的代码增加了用户登录状态的判断,同时对$blessing进行了过滤。
这是一个简单的login.php的代码示例:
登录
在这个代码示例中,首先使用session_start()启动会话。然后,如果表单被提交,它将检查用户提供的用户名和密码是否与预定义的用户名和密码匹配。如果匹配,则将$ _SESSION ['logged_in']设置为true,并重定向到新年祝福墙页面。如果用户名和密码不匹配,则显示错误消息。
上面的登录只设计了单用户登录,后面可以修改成从MySQL用户表查找用户信息。
以下是一个简单的用户登录系统的代码,用户信息存储在MySQL数据库中。注意到,现在存储的是明文密码,如需要增强安全性,可以增加md5()函数。
0) {
// 设置登录状态
$_SESSION['logged_in'] = true;
$_SESSION['username'] = $username;
// 跳转到祝福墙页面
header('Location: wall.php');
exit;
} else {
// 登录失败,显示错误信息
echo "用户名或密码错误,请重试。";
}
} else {
// 用户名和密码为空,显示错误信息
echo "请输入用户名和密码。";
}
// 关闭数据库连接
mysqli_close($conn);
?>
前端部分未作修改。
下面是一种实现管理功能的方法,实现对祝福的增删查改:
数据库设计:首先需要为祝福数据创建一张数据表,表中包含祝福内容、发送者、发送时间等字段。
增加祝福:使用 insert 语句将新的祝福插入数据库中。
删除祝福:使用 delete 语句删除指定的祝福。
查询祝福:使用 select 语句查询祝福,可以根据需要设置查询条件。
修改祝福:使用 update 语句修改指定的祝福。
需要注意的是,为了保证数据的安全性,对于对数据库的操作,需要使用 prepared statements 避免 SQL 注入攻击。
以下是简单的代码示例:
增加祝福:
$conn = mysqli_connect("localhost", "username", "password", "database");
$blessing = "祝大家新春快乐!";
$stmt = mysqli_prepare($conn, "INSERT INTO blessings (blessing) VALUES (?)");
mysqli_stmt_bind_param($stmt, "s", $blessing);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
mysqli_close($conn);
删除祝福:
$conn = mysqli_connect("localhost", "username", "password", "database");
$id = 1;
$stmt = mysqli_prepare($conn, "DELETE FROM blessings WHERE id = ?");
mysqli_stmt_bind_param($stmt, "i", $id);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
mysqli_close($conn);
查询祝福:
$conn = mysqli_connect("localhost", "username", "password", "database");
$stmt = mysqli_prepare($conn, "SELECT id, blessing FROM blessings");
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $id, $blessing);
while (mysqli_stmt_fetch($stmt)) {
printf("%d, %s\n", $id, $blessing);
}
mysqli_stmt_close($stmt);
mysqli_close($conn);
修改祝福:
$conn = mysqli_connect("localhost", "username", "password", "database");
$id = 1;
$blessing = "祝大家新春快乐!";
$stmt = mysqli_prepare($conn, "UPDATE blessings SET blessing = ? WHERE id = ?");
mysqli_stmt_bind_param($stmt, "si", $blessing, $id);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
mysqli_close($conn);
以下是基于HTML, CSS 和 JavaScript 的简单的祝福管理界面的前端代码:
祝福管理界面
ID
祝福内容
操作
1
新春快乐!
下面是一份用 PHP 实现的用户管理的代码:
';
}
// 添加新用户
if (isset($_POST['submit'])) {
$username = $_POST['username'];
$email = $_POST['email'];
$query = "INSERT INTO users (username, email) VALUES ('$username', '$email')";
mysqli_query($conn, $query);
}
// 修改用户信息
if (isset($_POST['update'])) {
$id = $_POST['id'];
$username = $_POST['username'];
$email = $_POST['email'];
$query = "UPDATE users SET username='$username', email='$email' WHERE id=$id";
mysqli_query($conn, $query);
}
// 删除用户
if (isset($_GET['delete'])) {
$id = $_GET['delete'];
$query = "DELETE FROM users WHERE id=$id";
mysqli_query($conn, $query);
}
// 关闭数据库连接
mysqli_close($conn);
?>
这段代码实现了从数据库中查询所有用户、添加新用户、修改用户信息和删除用户的功能。使用者可以根据实际情况对代码进行修改,以达到最终的需求。
以下是一个用户管理界面的示例代码:
HTML代码:
用户管理
用户管理
用户名
密码
操作