小明:嘿,小李,最近我在研究一个校友管理系统,想用PHP来做,你有什么建议吗?
小李:当然可以!校友系统是一个很实用的项目,特别是在高校或者企业中。它可以帮助组织和管理校友信息,方便后续的联系、活动组织等。你想知道有哪些主要功能吗?
小明:是的,我需要先了解这些功能,再考虑如何用PHP来实现。
小李:好的,一个完整的校友系统通常包括以下功能:
小明:具体有哪些呢?
小李:首先,用户注册与登录功能,这是所有系统的基础。然后是个人信息管理,比如姓名、联系方式、毕业年份、工作单位等。还有校友信息的查询和展示,以及活动发布和通知功能。
小明:听起来挺全面的。那这些功能怎么用PHP来实现呢?有没有具体的代码示例?
小李:当然有。我们可以从最基础的用户注册和登录开始,然后逐步扩展其他功能。先来看用户注册部分。
小明:好的,我先看看注册页面的代码。
小李:这是一个简单的HTML表单,用于收集用户的信息:
<form action="register.php" method="post">
<label>用户名:</label><input type="text" name="username"><br>
<label>密码:</label><input type="password" name="password"><br>
<label>邮箱:</label><input type="email" name="email"><br>
<input type="submit" value="注册">
</form>
小明:看起来很简单,但接下来是处理注册逻辑的PHP代码,对吧?
小李:没错,下面是register.php的内容:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "alumni_db";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
// 密码加密
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
$sql = "INSERT INTO users (username, password, email) VALUES ('$username', '$hashed_password', '$email')";
if ($conn->query($sql) === TRUE) {
echo "注册成功!";
} else {
echo "错误: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
小明:这个代码看起来不错,但是没有做输入验证,会不会有问题?
小李:你说得对,应该加入一些基本的验证,比如检查用户名是否已存在,邮箱格式是否正确等。
小明:那我们加个验证函数吧。
小李:好的,下面是一个简单的验证函数示例:
function validateInput($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
$username = validateInput($_POST['username']);
$email = validateInput($_POST['email']);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
die("无效的邮箱地址!");
}
// 检查用户名是否已存在
$check_sql = "SELECT * FROM users WHERE username = '$username'";
$result = $conn->query($check_sql);
if ($result->num_rows > 0) {
die("用户名已存在!");
}
小明:这样就更安全了。那登录功能怎么做呢?
小李:登录功能也是类似的,只不过需要从数据库中查找用户,并验证密码是否匹配。
小明:那我来写一下登录页面的HTML代码。
小李:好的,这里是一个简单的登录表单:
<form action="login.php" method="post">
<label>用户名:</label><input type="text" name="username"><br>
<label>密码:</label><input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
小明:那login.php的代码呢?
小李:下面是login.php的代码:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "alumni_db";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$username = validateInput($_POST['username']);
$password = $_POST['password'];
$sql = "SELECT * FROM users WHERE username = '$username'";
$result = $conn->query($sql);
if ($result->num_rows == 1) {
$row = $result->fetch_assoc();
if (password_verify($password, $row['password'])) {
session_start();
$_SESSION['username'] = $username;
echo "登录成功!";
} else {
echo "密码错误!";
}
} else {
echo "用户名不存在!";
}
$conn->close();
?>
小明:这看起来没问题,不过还需要添加会话管理,防止未登录用户访问某些页面。
小李:是的,你可以使用session_start()在每个页面开头启动会话,并检查用户是否登录。
小明:明白了。那接下来是信息管理功能,比如修改个人信息,怎么实现呢?
小李:信息管理功能可以通过一个表单来实现,用户填写后提交到update_profile.php进行更新。
小明:那我来写一下表单代码。
小李:好的,这是一个简单的表单示例:
<form action="update_profile.php" method="post">
<label>姓名:</label><input type="text" name="name"><br>
<label>联系方式:</label><input type="text" name="contact"><br>
<label>毕业年份:</label><input type="text" name="graduation_year"><br>
<label>工作单位:</label><input type="text" name="company"><br>
<input type="submit" value="更新信息">
</form>
小明:那update_profile.php的代码呢?
小李:这里是update_profile.php的代码:
<?php
session_start();
if (!isset($_SESSION['username'])) {
die("请先登录!");
}
$username = $_SESSION['username'];
$name = validateInput($_POST['name']);
$contact = validateInput($_POST['contact']);
$graduation_year = validateInput($_POST['graduation_year']);
$company = validateInput($_POST['company']);
$conn = new mysqli("localhost", "root", "", "alumni_db");
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$sql = "UPDATE users SET name='$name', contact='$contact', graduation_year='$graduation_year', company='$company' WHERE username='$username'";
if ($conn->query($sql) === TRUE) {
echo "信息更新成功!";
} else {
echo "错误: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
小明:这看起来还可以。那活动通知功能怎么实现呢?
小李:活动通知功能可以通过一个后台管理界面,管理员发布活动,用户可以在前端查看。
小明:那我来写一个发布活动的表单。
小李:好的,这是一个简单的发布活动表单:
<form action="add_event.php" method="post">
<label>活动名称:</label><input type="text" name="event_name"><br>
<label>时间:</label><input type="datetime-local" name="event_time"><br>
<label>地点:</label><input type="text" name="location"><br>
<label>描述:</label><textarea name="description"></textarea><br>
<input type="submit" value="发布活动">
</form>
小明:那add_event.php的代码呢?

小李:这里是add_event.php的代码:
<?php
session_start();
if (!isset($_SESSION['username'])) {
die("请先登录!");
}
$event_name = validateInput($_POST['event_name']);
$event_time = validateInput($_POST['event_time']);
$location = validateInput($_POST['location']);
$description = validateInput($_POST['description']);
$conn = new mysqli("localhost", "root", "", "alumni_db");
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$sql = "INSERT INTO events (event_name, event_time, location, description) VALUES ('$event_name', '$event_time', '$location', '$description')";
if ($conn->query($sql) === TRUE) {
echo "活动发布成功!";
} else {
echo "错误: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
小明:那用户怎么查看活动呢?
小李:用户可以通过一个页面来查看所有发布的活动,例如events.php。
小明:那我可以写一个简单的查询代码。
小李:好的,下面是events.php的代码:
<?php
$conn = new mysqli("localhost", "root", "", "alumni_db");
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$sql = "SELECT * FROM events";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "活动名称:" . $row["event_name"] . "<br>";
echo "时间:" . $row["event_time"] . "<br>";
echo "地点:" . $row["location"] . "<br>";
echo "描述:" . $row["description"] . "<br><br>";
}
} else {
echo "暂无活动信息。";
}
$conn->close();
?>
小明:这样用户就可以看到所有的活动了。看来这个系统已经具备了基本的功能。
小李:是的,除了这些功能,你还可以继续扩展,比如添加搜索功能、消息通知、数据导出等。
小明:太好了,我现在对校友系统有了更清晰的认识,也学会了如何用PHP实现这些功能。
小李:没错,PHP是一个非常强大的工具,适合用来开发这种基于Web的应用程序。如果你有兴趣,可以尝试用框架如Laravel来进一步提升开发效率。
小明:谢谢你的帮助,我会继续学习和实践的。
小李:不客气,加油!
