随着科技的不断发展,我们越来越依赖各种工具和软件来简化生活。生日是一个特别的日子,但有时人们会因为忙碌或其他原因而忘记这个重要的时刻。为了帮助大家不再错过重要的生日,本文将介绍如何使用PHP编写一个简单的生日提醒系统。

1. 系统需求

在开始编写代码之前,我们需要明确系统需求:

  • 用户管理:能够注册和登录用户。
  • 生日信息存储:系统需要存储用户的生日信息。
  • 提醒功能:在用户生日即将到来时发送提醒。

2. 环境搭建

首先,确保你的计算机上安装了PHP环境和MySQL数据库。以下是一个基本的安装步骤:

  1. 安装PHP:从下载并安装PHP。
  2. 安装MySQL:从下载并安装MySQL。
  3. 设置数据库:创建一个新的数据库和用户表。

3. 数据库设计

以下是一个简单的用户表设计示例:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(50) NOT NULL,
    birthday DATE NOT NULL
);

4. 用户注册和登录

接下来,我们将编写一个简单的用户注册和登录界面。

用户注册

<?php
// 用户注册处理
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = $_POST['username'];
    $password = password_hash($_POST['password'], PASSWORD_DEFAULT);
    $birthday = $_POST['birthday'];

    // 连接数据库
    $conn = new mysqli("localhost", "username", "password", "database");

    // 检查连接
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    // 插入新用户
    $sql = "INSERT INTO users (username, password, birthday)
    VALUES ('$username', '$password', '$birthday')";

    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }

    $conn->close();
}
?>

用户登录

<?php
// 用户登录处理
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = $_POST['username'];
    $password = $_POST['password'];

    // 连接数据库
    $conn = new mysqli("localhost", "username", "password", "database");

    // 检查连接
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    // 查询用户
    $sql = "SELECT id, password FROM users WHERE username = '$username'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        $row = $result->fetch_assoc();
        if (password_verify($password, $row["password"])) {
            echo "Login successful";
        } else {
            echo "Invalid password";
        }
    } else {
        echo "User not found";
    }

    $conn->close();
}
?>

5. 生日提醒功能

现在我们已经有了用户注册和登录功能,接下来我们将实现生日提醒功能。

生日提醒逻辑

<?php
// 检查用户生日并发送提醒
function checkAndSendReminders() {
    // 连接数据库
    $conn = new mysqli("localhost", "username", "password", "database");

    // 检查连接
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    // 查询即将到来的生日
    $sql = "SELECT id, username, birthday FROM users WHERE MONTH(birthday) = MONTH(CURDATE()) AND DAY(birthday) BETWEEN CURDATE() - INTERVAL 7 DAY AND CURDATE() + INTERVAL 7 DAY";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
            // 发送提醒(这里使用邮件发送为例)
            $to = $row["username"] . "@example.com";
            $subject = "Happy Birthday!";
            $message = "Happy Birthday, " . $row["username"] . "! We hope you have a wonderful day.";
            $headers = "From: reminders@example.com";

            mail($to, $subject, $message, $headers);
        }
    }

    $conn->close();
}
?>

定时任务

为了确保提醒功能能够定期运行,我们可以使用cron作业来定时执行上述函数。

# 编辑crontab
crontab -e

# 添加以下行来设置每天凌晨1点执行
0 1 * * * /usr/bin/php /path/to/your/script.php

6. 总结

通过以上步骤,我们使用PHP实现了一个简单的生日提醒系统。用户可以注册、登录并设置生日信息,系统会在生日前后发送提醒。这个例子展示了如何使用PHP进行基本的数据库操作和发送邮件。你可以根据实际需求进一步完善和扩展这个系统。