在PHP中實現簽到功能,可以通過以下步驟來完成:
CREATE TABLE `sign_ins` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`sign_date` date NOT NULL,
`status` enum('簽到','未簽到') NOT NULL DEFAULT '未簽到',
PRIMARY KEY (`id`),
FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
function signInUser($userId) {
// 連接數據庫
$conn = new mysqli('localhost', 'username', 'password', 'database');
if ($conn->connect_error) {
die("連接失敗: " . $conn->connect_error);
}
// 獲取今天的日期
$today = date('Y-m-d');
// 檢查用戶是否已經簽到
$sql = "SELECT status FROM sign_ins WHERE user_id = ? AND sign_date = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ii", $userId, $today);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
// 用戶已經簽到
echo "用戶已經簽到";
} else {
// 用戶未簽到,更新簽到狀態和日期
$sql = "INSERT INTO sign_ins (user_id, sign_date, status) VALUES (?, ?, '已簽到')";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ii", $userId, $today);
if ($stmt->execute()) {
echo "簽到成功";
} else {
echo "簽到失敗: " . $conn->error;
}
}
// 關閉數據庫連接
$stmt->close();
$conn->close();
}
signInUser函數,例如在用戶訪問簽到頁面時。if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$userId = $_SESSION['user_id']; // 假設用戶ID通過會話傳遞
signInUser($userId);
}
請注意,這個示例使用了預處理語句來防止SQL注入攻擊,并且假設用戶ID是通過會話傳遞的。在實際應用中,你可能需要根據你的應用程序的具體需求和安全要求來調整代碼。