admin/tags.php
(开头部分) 10KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
<?php
require_once __DIR__ . '/../core/Session.php';
require_once __DIR__ . '/../core/Security.php';
require_once __DIR__ . '/../core/Logger.php';
require_once __DIR__ . '/../app/models/Tag.php';
Session::start();
Session::requireLogin();
$user = Session::getUser();
$tagModel = new Tag();
$error = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$action = $_POST['action'] ?? '';
$csrfToken = $_POST['csrf_token'] ?? '';
if (!Security::verifyCSRFToken($csrfToken)) {
$error = '安全验证失败';
} else {
switch ($action) {
case 'create':
$name = trim($_POST['name'] ?? '');
$slug = trim($_POST['slug'] ?? '');
$description = trim($_POST['description'] ?? '');
if (empty($name)) {
$error = '请输入标签名称';
} elseif ($tagModel->findOneBy('name', $name)) {
$error = '标签名称已存在';
} else {
if (empty($slug)) {
$slug = Security::slugify($name);
}
$tagModel->create([
'name' => $name,
'slug' => $slug,
'description' => $description
]);
Logger::userAction('tag_create', "创建标签: {$name}");
Session::setFlash('success', '标签创建成功');
header('Location: tags.php');
exit;
}
break;
case 'update':
$id = (int)($_POST['id'] ?? 0);
$name = trim($_POST['name'] ?? '');
$slug = trim($_POST['slug'] ?? '');
$description = trim($_POST['description'] ?? '');
$tag = $tagModel->find($id);
if (!$tag) {
$error = '标签不存在';
} elseif (empty($name)) {
$error = '请输入标签名称';
} else {
后面还有 194 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。
