个人导航管理系统

个人导航管理系统

我的导航链接

password_hash('admin123', PASSWORD_DEFAULT) ]; file_put_contents(USER_FILE, json_encode($users)); } // 初始化链接数据文件 if (!file_exists(DATA_FILE)) { $default_links = [ [ 'id' => 1, 'title' => 'GitHub', 'url' => 'https://github.com', 'category' => '开发资源' ], [ 'id' => 2, 'title' => 'Stack Overflow', 'url' => 'https://stackoverflow.com', 'category' => '开发资源' ], [ 'id' => 3, 'title' => '腾讯云', 'url' => 'https://cloud.tencent.com', 'category' => '云服务' ] ]; file_put_contents(DATA_FILE, json_encode($default_links)); } } /** * 处理认证逻辑 */ function handle_authentication() { // 检查会话是否过期 if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > SESSION_TIMEOUT)) { session_unset(); session_destroy(); session_start(); } $_SESSION['last_activity'] = time(); // 处理登录请求 - 只有在明确是登录操作时才处理 if (isset($_POST['action']) && $_POST['action'] === 'login') { $username = $_POST['username'] ?? ''; $password = $_POST['password'] ?? ''; if (authenticate_user($username, $password)) { $_SESSION['logged_in'] = true; $_SESSION['username'] = $username; header('Location: ' . $_SERVER['PHP_SELF']); exit; } else { $_SESSION['message'] = '用户名或密码错误!'; header('Location: ' . $_SERVER['PHP_SELF']); exit; } } // 处理退出请求 - 只有在明确是退出操作时才处理 if (isset($_POST['action']) && $_POST['action'] === 'logout') { session_unset(); session_destroy(); header('Location: ' . $_SERVER['PHP_SELF']); exit; } } /** * 用户认证 */ function authenticate_user($username, $password) { if (!file_exists(USER_FILE)) { return false; } $users = json_decode(file_get_contents(USER_FILE), true); if (isset($users[$username]) && password_verify($password, $users[$username])) { return true; } return false; } /** * 检查是否已登录 */ function is_logged_in() { return isset($_SESSION['logged_in']) && $_SESSION['logged_in'] === true; } /** * 处理链接操作 */ function handle_link_operations() { if (!is_logged_in()) { return; } $action = $_POST['action'] ?? $_GET['action'] ?? ''; switch ($action) { case 'save_link': save_link(); break; case 'delete_link': delete_link(); break; case 'save_category': save_category(); break; case 'delete_category': delete_category(); break; case 'edit_link': // 只是显示编辑模态框,不需要特殊处理 break; } } /** * 保存链接 */ function save_link() { $links = get_links(); $id = intval($_POST['link_id'] ?? 0); $title = trim($_POST['title'] ?? ''); $url = trim($_POST['url'] ?? ''); $category = trim($_POST['category'] ?? ''); if (empty($title) || empty($url) || empty($category)) { $_SESSION['message'] = '请填写所有必填字段!'; $_SESSION['message_type'] = 'error'; return; } // 如果是编辑现有链接 if ($id > 0) { foreach ($links as &$link) { if ($link['id'] === $id) { $link['title'] = $title; $link['url'] = $url; $link['category'] = $category; break; } } } else { // 添加新链接 $new_id = !empty($links) ? max(array_column($links, 'id')) + 1 : 1; $links[] = [ 'id' => $new_id, 'title' => $title, 'url' => $url, 'category' => $category ]; } if (save_links($links)) { $_SESSION['message'] = $id > 0 ? '链接更新成功!' : '链接添加成功!'; $_SESSION['message_type'] = 'success'; } else { $_SESSION['message'] = '操作失败,请重试!'; $_SESSION['message_type'] = 'error'; } header('Location: ' . $_SERVER['PHP_SELF']); exit; } /** * 删除链接 */ function delete_link() { $id = intval($_GET['id'] ?? 0); if ($id <= 0) { return; } $links = get_links(); $new_links = array_filter($links, function($link) use ($id) { return $link['id'] !== $id; }); if (save_links(array_values($new_links))) { $_SESSION['message'] = '链接删除成功!'; $_SESSION['message_type'] = 'success'; } else { $_SESSION['message'] = '删除失败,请重试!'; $_SESSION['message_type'] = 'error'; } header('Location: ' . $_SERVER['PHP_SELF']); exit; } /** * 保存分类 */ function save_category() { $old_name = trim($_POST['old_category_name'] ?? ''); $new_name = trim($_POST['category_name'] ?? ''); if (empty($new_name)) { $_SESSION['message'] = '分类名称不能为空!'; $_SESSION['message_type'] = 'error'; return; } $links = get_links(); $updated = false; foreach ($links as &$link) { if ($link['category'] === $old_name) { $link['category'] = $new_name; $updated = true; } } if ($updated && save_links($links)) { $_SESSION['message'] = empty($old_name) ? '分类添加成功!' : '分类更新成功!'; $_SESSION['message_type'] = 'success'; } else { $_SESSION['message'] = '操作失败,请重试!'; $_SESSION['message_type'] = 'error'; } header('Location: ' . $_SERVER['PHP_SELF']); exit; } /** * 删除分类 */ function delete_category() { $category_name = urldecode($_GET['name'] ?? ''); if (empty($category_name)) { return; } $links = get_links(); $new_links = array_filter($links, function($link) use ($category_name) { return $link['category'] !== $category_name; }); if (save_links(array_values($new_links))) { $_SESSION['message'] = '分类删除成功!'; $_SESSION['message_type'] = 'success'; } else { $_SESSION['message'] = '删除失败,请重试!'; $_SESSION['message_type'] = 'error'; } header('Location: ' . $_SERVER['PHP_SELF']); exit; } /** * 获取链接数据 */ function get_links() { if (!file_exists(DATA_FILE)) { return []; } $data = file_get_contents(DATA_FILE); return json_decode($data, true) ?: []; } /** * 保存链接数据 */ function save_links($links) { return file_put_contents(DATA_FILE, json_encode($links, JSON_PRETTY_PRINT)) !== false; } /** * 获取分类列表 */ function get_categories($links) { $categories = []; foreach ($links as $link) { if (!in_array($link['category'], $categories)) { $categories[] = $link['category']; } } return $categories; } ?>