要在PHP中為待辦事項列表(TodoList)實現多用戶支持,您需要遵循以下步驟:
創建數據庫和用戶表
首先,創建一個數據庫來存儲用戶信息和待辦事項。然后創建一個名為users
的表格,包含以下字段:id(主鍵)、username、email 和 password。還需要創建一個名為todos
的表格,包含以下字段:id(主鍵)、user_id(外鍵,關聯到users表的id)、title(待辦事項標題)和completed(待辦事項是否已完成)。
設置用戶注冊和登錄功能
創建一個注冊表單,讓用戶輸入用戶名、電子郵件地址和密碼。將這些信息存儲在數據庫的users
表中。對于登錄功能,創建一個登錄表單,讓用戶輸入他們的電子郵件地址和密碼。驗證用戶身份并允許他們登錄。
會話管理 當用戶登錄時,使用PHP會話(session)來存儲用戶信息。這樣可以在不同頁面之間保留用戶狀態。例如,將用戶ID存儲在會話中,以便在顯示和添加待辦事項時識別用戶。
顯示用戶的待辦事項
根據存儲在會話中的用戶ID從數據庫中獲取該用戶的待辦事項。使用SQL查詢,通過比較todos
表中的user_id
字段與會話中的用戶ID來實現這一點。然后,將結果顯示在待辦事項列表中。
添加新的待辦事項 當用戶添加新的待辦事項時,將新待辦事項與會話中的用戶ID關聯。這樣,只有特定用戶才能看到他們自己的待辦事項。
更新和刪除待辦事項 允許用戶更新和刪除他們的待辦事項。在更新或刪除操作中,確保只有相應用戶可以修改他們自己的待辦事項。
下面是一個簡化的代碼示例:
// 連接到數據庫
$db = new PDO('mysql:host=localhost;dbname=myDatabase', 'username', 'password');
// 獲取會話中的用戶ID
session_start();
$userId = $_SESSION['user_id'];
// 獲取用戶的待辦事項
$query = $db->prepare("SELECT * FROM todos WHERE user_id = :user_id");
$query->execute(['user_id' => $userId]);
$todos = $query->fetchAll(PDO::FETCH_ASSOC);
// 顯示待辦事項
foreach ($todos as $todo) {
echo $todo['title'] . '<br>';
}
// 添加新的待辦事項
if (isset($_POST['addTodo'])) {
$title = $_POST['title'];
$query = $db->prepare("INSERT INTO todos (user_id, title, completed) VALUES (:user_id, :title, 0)");
$query->execute(['user_id' => $userId, 'title' => $title]);
}
// 更新待辦事項狀態
if (isset($_POST['updateTodo'])) {
$todoId = $_POST['todo_id'];
$completed = $_POST['completed'];
$query = $db->prepare("UPDATE todos SET completed = :completed WHERE id = :id AND user_id = :user_id");
$query->execute(['completed' => $completed, 'id' => $todoId, 'user_id' => $userId]);
}
// 刪除待辦事項
if (isset($_POST['deleteTodo'])) {
$todoId = $_POST['todo_id'];
$query = $db->prepare("DELETE FROM todos WHERE id = :id AND user_id = :user_id");
$query->execute(['id' => $todoId, 'user_id' => $userId]);
}
請注意,這只是一個簡化的示例。在實際項目中,您需要考慮安全性(如防止SQL注入和XSS攻擊)、錯誤處理和代碼組織等方面。