diff --git a/03.数据库/03.数据库开发项目代码示例/01.笔记网站/.codebuddy/models.json b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/.codebuddy/models.json
deleted file mode 100644
index 2e3cc30..0000000
--- a/03.数据库/03.数据库开发项目代码示例/01.笔记网站/.codebuddy/models.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "models": [
- {
- "id": "kimi-for-coding",
- "name": "kimi-for-coding",
- "vendor": "user",
- "url": "https://api.kimi.com/coding/v1",
- "apiKey": "sk-kimi-OLoO20UJ8D3hPtywZqitU6zQO6edvWXhrRcWynoQFWBsmf38slzCG3ZbhvhLZOeS",
- "supportsToolCall": true,
- "supportsImages": true,
- "supportsReasoning": false,
- "temperature": 1
- },
- {
- "id": "kimicode",
- "name": "kimicode",
- "vendor": "user",
- "url": "https://api.kimi.com/coding/v1",
- "apiKey": "sk-kimi-1sl2dMlwHcDAM5epuy4EHXhlehH38tcZxzqyOXAK7Og81HofBAcmYnW86KOd9Hdr",
- "supportsToolCall": true,
- "supportsImages": true,
- "supportsReasoning": true,
- "temperature": 1
- },
- {
- "id": "mimo-v2.5-pro",
- "name": "mimo-v2.5-pro",
- "vendor": "user",
- "url": "https://token-plan-cn.xiaomimimo.com/v1",
- "apiKey": "tpqqgst8uxezjxw070kyv57vo4ayjm97go9jqk7fh",
- "supportsToolCall": true,
- "supportsImages": true,
- "supportsReasoning": false
- },
- {
- "id": "deepseek-v4-pro",
- "name": "DeepSeek-V4 Pro",
- "vendor": "user",
- "url": "https://api.deepseek.com/chat/completions",
- "apiKey": "sk-4456a067934f4a2a9582d0f579c7b231",
- "supportsToolCall": true,
- "supportsImages": false,
- "supportsReasoning": true
- }
- ]
-}
-
diff --git a/03.数据库/03.数据库开发项目代码示例/01.笔记网站/admin.html b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/admin.html
deleted file mode 100644
index 68e4dd5..0000000
--- a/03.数据库/03.数据库开发项目代码示例/01.笔记网站/admin.html
+++ /dev/null
@@ -1,249 +0,0 @@
-
-
-
-
-
-后台管理 - 笔记小站
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/03.数据库/03.数据库开发项目代码示例/01.笔记网站/admin_categories.php b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/admin_categories.php
new file mode 100644
index 0000000..234115a
--- /dev/null
+++ b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/admin_categories.php
@@ -0,0 +1,217 @@
+
+
+
+
+
+ 分类管理 - 后台 - 笔记小站
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | ID |
+ 图标 |
+ 名称 |
+ 颜色 |
+ 操作 |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/03.数据库/03.数据库开发项目代码示例/01.笔记网站/admin_comments.php b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/admin_comments.php
new file mode 100644
index 0000000..e775a63
--- /dev/null
+++ b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/admin_comments.php
@@ -0,0 +1,120 @@
+
+
+
+
+
+ 评论管理 - 后台 - 笔记小站
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | ID |
+ 笔记 |
+ 用户 |
+ 内容 |
+ 时间 |
+ 操作 |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/03.数据库/03.数据库开发项目代码示例/01.笔记网站/admin_notes.php b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/admin_notes.php
new file mode 100644
index 0000000..a0f3633
--- /dev/null
+++ b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/admin_notes.php
@@ -0,0 +1,227 @@
+
+
+
+
+
+ 笔记管理 - 后台 - 笔记小站
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | ID |
+ 标题 |
+ 分类 |
+ 作者 |
+ 时间 |
+ 操作 |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/03.数据库/03.数据库开发项目代码示例/01.笔记网站/admin_sidebar.php b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/admin_sidebar.php
new file mode 100644
index 0000000..881d497
--- /dev/null
+++ b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/admin_sidebar.php
@@ -0,0 +1,18 @@
+
+
diff --git a/03.数据库/03.数据库开发项目代码示例/01.笔记网站/admin_users.php b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/admin_users.php
new file mode 100644
index 0000000..1e105d1
--- /dev/null
+++ b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/admin_users.php
@@ -0,0 +1,316 @@
+
+
+
+
+
+
+ 用户管理 - 后台 - 笔记小站
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | ID |
+ 头像 |
+ 用户名 |
+ 邮箱 |
+ 角色 |
+ 时间 |
+ 操作 |
+
+
+
+
+
+ | = $uid ?> |
+ = $avatar ?> |
+ = $username ?> |
+ = $email ?> |
+ = $roleText ?> |
+ = $created ?> |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/03.数据库/03.数据库开发项目代码示例/01.笔记网站/css/style.css b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/css/style.css
index 68e900e..04de97d 100644
--- a/03.数据库/03.数据库开发项目代码示例/01.笔记网站/css/style.css
+++ b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/css/style.css
@@ -543,7 +543,78 @@ input, textarea, select { font-family: inherit; outline: none; }
.badge-user { background: #e0e7ff; color: #4f46e5; }
.badge-category { background: #d1fae5; color: #059669; }
-/* ==================== Admin Tabs ==================== */
+/* ==================== Admin Sidebar Layout ==================== */
+.admin-layout {
+ display: flex; min-height: calc(100vh - 64px);
+ max-width: 1280px; margin: 0 auto; padding: 1.5rem;
+ gap: 1.5rem;
+}
+
+.admin-sidebar {
+ width: 220px; flex-shrink: 0;
+ background: var(--bg-card); border-radius: var(--radius-lg);
+ border: 1px solid var(--border); padding: 1rem;
+ height: fit-content; position: sticky; top: 80px;
+ animation: fadeInUp 0.4s ease both;
+}
+
+.admin-nav { display: flex; flex-direction: column; gap: 0.25rem; }
+
+.admin-nav-item {
+ display: flex; align-items: center; gap: 0.65rem;
+ padding: 0.75rem 1rem; border-radius: var(--radius-sm);
+ font-size: 0.9rem; font-weight: 600; color: var(--text-secondary);
+ transition: all var(--transition); text-decoration: none;
+}
+.admin-nav-item:hover { background: var(--bg-hover); color: var(--text); }
+.admin-nav-item.active {
+ background: linear-gradient(135deg, var(--primary), #8b5cf6);
+ color: white; box-shadow: var(--shadow-sm);
+}
+.admin-nav-item span { font-size: 1.1rem; }
+
+.admin-main {
+ flex: 1; min-width: 0;
+ animation: fadeInUp 0.4s 0.05s ease both;
+}
+
+.admin-panel {
+ background: var(--bg-card); border-radius: var(--radius-lg);
+ border: 1px solid var(--border); overflow: hidden;
+}
+
+.admin-panel-header {
+ display: flex; align-items: center; justify-content: space-between;
+ padding: 1.25rem 1.5rem;
+ border-bottom: 1px solid var(--border);
+}
+.admin-panel-header h3 {
+ font-size: 1.1rem; font-weight: 700;
+ display: flex; align-items: center; gap: 0.4rem;
+}
+
+.admin-panel-body { padding: 0; }
+
+.admin-table { width: 100%; border-collapse: collapse; }
+.admin-table thead { background: var(--bg); }
+.admin-table th {
+ text-align: left; padding: 0.75rem 1.25rem;
+ font-size: 0.78rem; font-weight: 700; color: var(--text-muted);
+ text-transform: uppercase; letter-spacing: 0.05em;
+ border-bottom: 2px solid var(--border);
+}
+.admin-table td {
+ padding: 0.85rem 1.25rem; font-size: 0.9rem;
+ border-bottom: 1px solid var(--border-light);
+ color: var(--text);
+}
+.admin-table tbody tr { transition: var(--transition); }
+.admin-table tbody tr:hover { background: var(--bg-hover); }
+.admin-table tbody tr:last-child td { border-bottom: none; }
+.admin-table td.actions { white-space: nowrap; }
+.admin-table td.actions .btn + .btn { margin-left: 0.35rem; }
+
+/* ==================== Admin Tabs (legacy) ==================== */
.admin-header {
text-align: center; padding: 2rem 0 1.5rem;
animation: fadeInUp 0.5s ease both;
diff --git a/03.数据库/03.数据库开发项目代码示例/01.笔记网站/function/admin.php b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/function/admin.php
new file mode 100644
index 0000000..0a73a0d
--- /dev/null
+++ b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/function/admin.php
@@ -0,0 +1,33 @@
+ 10004, 'status' => 'error', 'message' => '数据库连接失败']);
+ exit;
+}
+
+// 判断是否admin登录
+session_start();
+if (!isset($_SESSION['username'])) {
+ echo "";
+ exit;
+}
+if ($_SESSION['username'] != 'admin') {
+ echo "";
+ exit;
+}
+
+// 获取所有的用户信息
+if($action=='getUsers'){
+ $sql = "select * from users";
+ $result = mysqli_query($conn, $sql);
+ $users = mysqli_fetch_all($result, MYSQLI_ASSOC);
+ echo json_encode($users);
+}
+?>
\ No newline at end of file
diff --git a/03.数据库/03.数据库开发项目代码示例/01.笔记网站/function/user.php b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/function/user.php
index 465e23f..85a143f 100644
--- a/03.数据库/03.数据库开发项目代码示例/01.笔记网站/function/user.php
+++ b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/function/user.php
@@ -5,6 +5,7 @@ $action = $data['action'] ?? '';
// 处理与用户相关的操作
include 'db.php';
+session_start();
// 如果数据库连接失败,则返回错误信息
/** @var mysqli $conn */
@@ -16,7 +17,7 @@ if (!isset($conn)) {
// 测试用户名是否已存在
function testUsername(mysqli $conn, string $username): bool
{
- $sql = "select * from users where username = '$username'"; // sql注入风险
+ $sql = "select * from users where username = '$username' and status = 1"; // sql注入风险
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
return true;
@@ -30,15 +31,16 @@ if ($action == 'register') {
$username = $data['username'];
$password = $data['password'];
$email = $data['email'];
+ $role = isset($data['role']) ? $data['role'] : 'user';
if (testUsername($conn, $username)) {
echo json_encode(['code' => 10001, 'status' => 'error', 'message' => '用户名已存在']);
} else {
- $sql = "insert into users (username, password, email) values ('$username', '$password', '$email')";
+ $sql = "insert into users (username, password, email, role) values ('$username', '$password', '$email', '$role')";
$result = mysqli_query($conn, $sql);
if ($result) {
echo json_encode(['code' => 0, 'status' => 'success', 'message' => '注册成功']);
} else {
- echo json_encode(['code' => 10002, 'status' => 'error', 'message' => '注册失败']);
+ echo json_encode(['code' => 10002, 'status' => 'error', 'message' => '注册失败', 'sql'=>$sql]);
}
}
}
@@ -51,7 +53,36 @@ if ($action == 'login') {
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
echo json_encode(['code' => 0, 'status' => 'success', 'message' => '登录成功']);
+ $_SESSION['username'] = $username;
} else {
echo json_encode(['code' => 10003, 'status' => 'error', 'message' => '用户名或密码错误']);
}
}
+
+// delete的逻辑
+if ($action == 'delete') {
+ $id = $data['id'];
+ $sql = "update users set status = 0 where id = $id";
+ $result = mysqli_query($conn, $sql);
+ if ($result) {
+ echo json_encode(['code' => 0, 'status' => 'success', 'message' => '删除成功']);
+ } else {
+ echo json_encode(['code' => 10005, 'status' => 'error', 'message' => '删除失败']);
+ }
+}
+
+
+// update的逻辑
+if ($action == 'update') {
+ $id = $data['id'];
+ $username = $data['username'];
+ $email = $data['email'];
+ $role = $data['role'];
+ $sql = "update users set username = '$username', email = '$email', role = '$role' where id = $id";
+ $result = mysqli_query($conn, $sql);
+ if ($result) {
+ echo json_encode(['code' => 0, 'status' => 'success', 'message' => '更新成功']);
+ } else {
+ echo json_encode(['code' => 10006, 'status' => 'error', 'message' => '更新失败']);
+ }
+}
\ No newline at end of file
diff --git a/03.数据库/03.数据库开发项目代码示例/01.笔记网站/js/common.js b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/js/common.js
index 1c5fbd5..6285d47 100644
--- a/03.数据库/03.数据库开发项目代码示例/01.笔记网站/js/common.js
+++ b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/js/common.js
@@ -25,7 +25,7 @@ function renderNavbar() {
if (!nav) return;
nav.innerHTML =
'🏠 首页' +
- '⚙️ 后台管理' +
+ '⚙️ 后台管理' +
'✍️ 注册' +
'🔑 登录';
}
diff --git a/03.数据库/03.数据库开发项目代码示例/01.笔记网站/login.html b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/login.html
index 914aaa5..f260dde 100644
--- a/03.数据库/03.数据库开发项目代码示例/01.笔记网站/login.html
+++ b/03.数据库/03.数据库开发项目代码示例/01.笔记网站/login.html
@@ -62,9 +62,15 @@
}).then(res => res.json()).then(data => {
if (data.code == 0) {
showToast('登录成功', 'success');
- setTimeout(() => {
- window.location.href = '/';
- }, 1000);
+ if (username == 'admin') {
+ setTimeout(() => {
+ window.location.href = '/admin_categories.php';
+ }, 1000);
+ }else{
+ setTimeout(() => {
+ history.go(-1);
+ }, 1000);
+ }
return
}
showToast(data.message, 'error'); return;