From 7174e34e8850494cf5f4d15193540f1382bb3324 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Sat, 7 Feb 2026 13:55:25 +0000 Subject: [PATCH] =?UTF-8?q?=E8=B4=A2=E7=A5=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin.php | 107 +++++ admin_steps.php | 179 ++++++++ assets/css/custom.css | 489 ++++++++------------- assets/js/main.js | 94 ++-- assets/pasted-20260207-134833-7329dc42.jpg | Bin 0 -> 49691 bytes db/init.php | 68 +++ index.php | 326 ++++++++------ login.php | 73 +++ logout.php | 5 + 9 files changed, 826 insertions(+), 515 deletions(-) create mode 100644 admin.php create mode 100644 admin_steps.php create mode 100644 assets/pasted-20260207-134833-7329dc42.jpg create mode 100644 db/init.php create mode 100644 login.php create mode 100644 logout.php diff --git a/admin.php b/admin.php new file mode 100644 index 0000000..6bf2e57 --- /dev/null +++ b/admin.php @@ -0,0 +1,107 @@ + $_POST['site_title'], + 'site_logo' => $_POST['site_logo'], + 'tg_link' => $_POST['tg_link'], + 'footer_copy' => $_POST['footer_copy'], + 'watermark_text' => $_POST['watermark_text'] + ]; + + foreach ($updates as $key => $val) { + $stmt = $pdo->prepare("UPDATE settings SET setting_value = ? WHERE setting_key = ?"); + $stmt->execute([$val, $key]); + } + $message = '设置更新成功!'; +} + +// Get current settings +$settings = []; +$stmt = $pdo->query("SELECT setting_key, setting_value FROM settings"); +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $settings[$row['setting_key']] = $row['setting_value']; +} +$site_logo = $settings['site_logo'] ?? 'assets/pasted-20260207-134833-7329dc42.jpg'; +?> + + + + + 后台管理 - <?php echo htmlspecialchars($settings['site_title'] ?? '财神组聊天框架'); ?> + + + + + + +
+
+ +
+

系统设置

+ +
+ + +
+
+
+
+ + +
+
+ + +
当前路径:
+
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
+
+
+
+ + \ No newline at end of file diff --git a/admin_steps.php b/admin_steps.php new file mode 100644 index 0000000..e2f1b73 --- /dev/null +++ b/admin_steps.php @@ -0,0 +1,179 @@ +query("SELECT setting_key, setting_value FROM settings"); +$settings = []; +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $settings[$row['setting_key']] = $row['setting_value']; +} +$site_logo = $settings['site_logo'] ?? 'assets/pasted-20260207-134833-7329dc42.jpg'; + +$message = ''; +$edit_day = isset($_GET['edit']) ? (int)$_GET['edit'] : 0; + +// Handle Content Update +if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['update_step'])) { + $day = (int)$_POST['day_number']; + $stmt = $pdo->prepare("UPDATE steps SET + title = ?, what_to_chat = ?, how_to_chat = ?, why_to_chat = ?, + correct_example = ?, wrong_example = ?, correct_explanation = ?, + wrong_explanation = ?, image_url = ? + WHERE day_number = ?"); + + $stmt->execute([ + $_POST['title'], $_POST['what_to_chat'], $_POST['how_to_chat'], $_POST['why_to_chat'], + $_POST['correct_example'], $_POST['wrong_example'], $_POST['correct_explanation'], + $_POST['wrong_explanation'], $_POST['image_url'], $day + ]); + $message = "第 {$day} 天的内容更新成功!"; + $edit_day = 0; +} + +// Fetch all steps +$steps = $pdo->query("SELECT * FROM steps ORDER BY day_number ASC")->fetchAll(PDO::FETCH_ASSOC); + +// Fetch specific step for editing +$current_step = null; +if ($edit_day > 0) { + foreach ($steps as $s) { + if ($s['day_number'] == $edit_day) { + $current_step = $s; + break; + } + } +} +?> + + + + + 话术管理 - <?php echo htmlspecialchars($settings['site_title'] ?? '财神组聊天框架'); ?> + + + + + + +
+
+ +
+
+

话术管理 (1-7天步骤)

+
+ + +
+ + + +
+
+ 正在编辑:第 + +
+
+
+ +
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ + + + +
+
+ + + + +
+
+
+ + 取消 +
+
+
+
+ + +
+ + + + + + + + + + + + + + + + + + + +
天数标题最后更新操作
Day + + 编辑 + +
+
+
+
+
+ + \ No newline at end of file diff --git a/assets/css/custom.css b/assets/css/custom.css index 65a1626..75b72dd 100644 --- a/assets/css/custom.css +++ b/assets/css/custom.css @@ -1,346 +1,213 @@ :root { - --color-bg: #ffffff; - --color-text: #1a1a1a; - --color-primary: #2563EB; /* Vibrant Blue */ - --color-secondary: #000000; - --color-accent: #A3E635; /* Lime Green */ - --color-surface: #f8f9fa; - --font-heading: 'Space Grotesk', sans-serif; - --font-body: 'Inter', sans-serif; - --border-width: 2px; - --shadow-hard: 5px 5px 0px #000; - --shadow-hover: 8px 8px 0px #000; - --radius-pill: 50rem; - --radius-card: 1rem; + --primary-color: #d4af37; + --secondary-color: #1a1a1a; + --text-color: #333; + --bg-color: #f8f9fa; + --sidebar-width: 280px; } body { - font-family: var(--font-body); - background-color: var(--color-bg); - color: var(--color-text); + font-family: 'Inter', "Microsoft YaHei", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + background-color: var(--bg-color); + color: var(--text-color); overflow-x: hidden; } -h1, h2, h3, h4, h5, h6, .navbar-brand { - font-family: var(--font-heading); - letter-spacing: -0.03em; -} - -/* Utilities */ -.text-primary { color: var(--color-primary) !important; } -.bg-black { background-color: #000 !important; } -.text-white { color: #fff !important; } -.shadow-hard { box-shadow: var(--shadow-hard); } -.border-2-black { border: var(--border-width) solid #000; } -.py-section { padding-top: 5rem; padding-bottom: 5rem; } - -/* Navbar */ -.navbar { - background: rgba(255, 255, 255, 0.9); - backdrop-filter: blur(10px); - border-bottom: var(--border-width) solid transparent; - transition: all 0.3s; - padding-top: 1rem; - padding-bottom: 1rem; -} - -.navbar.scrolled { - border-bottom-color: #000; - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} - -.brand-text { - font-size: 1.5rem; - font-weight: 800; -} - -.nav-link { - font-weight: 500; - color: var(--color-text); - margin-left: 1rem; - position: relative; -} - -.nav-link:hover, .nav-link.active { - color: var(--color-primary); -} - -/* Buttons */ -.btn { - font-weight: 700; - font-family: var(--font-heading); - padding: 0.8rem 2rem; - border-radius: var(--radius-pill); - border: var(--border-width) solid #000; - transition: all 0.2s cubic-bezier(0.25, 1, 0.5, 1); - box-shadow: var(--shadow-hard); -} - -.btn:hover { - transform: translate(-2px, -2px); - box-shadow: var(--shadow-hover); -} - -.btn:active { - transform: translate(2px, 2px); - box-shadow: 0 0 0 #000; -} - -.btn-primary { - background-color: var(--color-primary); - border-color: #000; - color: #fff; -} - -.btn-primary:hover { - background-color: #1d4ed8; - border-color: #000; - color: #fff; -} - -.btn-outline-dark { - background-color: #fff; - color: #000; -} - -.btn-cta { - background-color: var(--color-accent); - color: #000; -} - -.btn-cta:hover { - background-color: #8cc629; - color: #000; -} - -/* Hero Section */ -.hero-section { - min-height: 100vh; - padding-top: 80px; -} - -.background-blob { - position: absolute; - border-radius: 50%; - filter: blur(80px); - opacity: 0.6; - z-index: 1; -} - -.blob-1 { - top: -10%; - right: -10%; - width: 600px; - height: 600px; - background: radial-gradient(circle, var(--color-accent), transparent); -} - -.blob-2 { - bottom: 10%; - left: -10%; - width: 500px; - height: 500px; - background: radial-gradient(circle, var(--color-primary), transparent); -} - -.highlight-text { - background: linear-gradient(120deg, transparent 0%, transparent 40%, var(--color-accent) 40%, var(--color-accent) 100%); - background-repeat: no-repeat; - background-size: 100% 40%; - background-position: 0 88%; - padding: 0 5px; -} - -.dot { color: var(--color-primary); } - -.badge-pill { - display: inline-block; - padding: 0.5rem 1rem; - border: 2px solid #000; - border-radius: 50px; - font-weight: 700; - background: #fff; - box-shadow: 4px 4px 0 #000; - font-family: var(--font-heading); - font-size: 0.9rem; -} - -/* Marquee */ -.marquee-container { - overflow: hidden; - white-space: nowrap; - border-top: 2px solid #000; - border-bottom: 2px solid #000; -} - -.rotate-divider { - transform: rotate(-2deg) scale(1.05); - z-index: 10; - position: relative; - margin-top: -50px; - margin-bottom: 30px; -} - -.marquee-content { - display: inline-block; - animation: marquee 20s linear infinite; - font-family: var(--font-heading); - font-weight: 700; - font-size: 1.5rem; - letter-spacing: 2px; -} - -@keyframes marquee { - 0% { transform: translateX(0); } - 100% { transform: translateX(-50%); } -} - -/* Portfolio Cards */ -.project-card { - border: 2px solid #000; - border-radius: var(--radius-card); - overflow: hidden; - background: #fff; - transition: transform 0.3s ease; - box-shadow: var(--shadow-hard); +/* Watermark */ +.watermark-container { + position: fixed; + top: 0; + left: 0; + width: 100%; height: 100%; + pointer-events: none; + z-index: 9999; + opacity: 0.05; + overflow: hidden; +} + +.watermark-text { + position: absolute; + width: 200%; + height: 200%; + top: -50%; + left: -50%; display: flex; - flex-direction: column; + flex-wrap: wrap; + justify-content: center; + align-content: center; + transform: rotate(-30deg); + font-size: 24px; + font-weight: bold; + color: #000; } -.project-card:hover { - transform: translateY(-10px); - box-shadow: 8px 8px 0 #000; +.watermark-item { + padding: 60px; + white-space: nowrap; } -.card-img-holder { - height: 250px; +/* Sidebar Layout */ +.wrapper { + display: flex; + min-height: 100vh; +} + +#sidebar { + width: var(--sidebar-width); + background: var(--secondary-color); + color: #fff; + transition: all 0.3s; + position: fixed; + height: 100vh; + z-index: 1000; +} + +#content { + width: calc(100% - var(--sidebar-width)); + margin-left: var(--sidebar-width); + padding: 40px; + transition: all 0.3s; +} + +.sidebar-header { + padding: 25px; + background: #000; + text-align: center; +} + +.sidebar-header h3 { + font-size: 1.2rem; + color: var(--primary-color); + margin: 0; +} + +#sidebar ul.components { + padding: 20px 0; +} + +#sidebar ul li a { + padding: 15px 25px; + display: block; + color: #adb5bd; + text-decoration: none; + transition: 0.3s; +} + +#sidebar ul li a:hover, #sidebar ul li.active > a { + color: #fff; + background: rgba(212, 175, 55, 0.1); + border-left: 4px solid var(--primary-color); +} + +#sidebar ul li a i { + margin-right: 10px; +} + +/* Floating TG Button */ +.tg-float { + position: fixed; + right: 30px; + top: 50%; + transform: translateY(-50%); + z-index: 1001; + text-align: center; +} + +.tg-btn { + width: 60px; + height: 60px; + background-color: #0088cc; + color: white; + border-radius: 50%; display: flex; align-items: center; justify-content: center; - border-bottom: 2px solid #000; - position: relative; - font-size: 4rem; -} - -.placeholder-art { - transition: transform 0.3s ease; -} - -.project-card:hover .placeholder-art { - transform: scale(1.2) rotate(10deg); -} - -.bg-soft-blue { background-color: #e0f2fe; } -.bg-soft-green { background-color: #dcfce7; } -.bg-soft-purple { background-color: #f3e8ff; } -.bg-soft-yellow { background-color: #fef9c3; } - -.category-tag { - position: absolute; - top: 15px; - right: 15px; - background: #000; - color: #fff; - padding: 5px 12px; - border-radius: 20px; - font-size: 0.75rem; - font-weight: 700; -} - -.card-body { padding: 1.5rem; } - -.link-arrow { + font-size: 30px; + box-shadow: 0 4px 15px rgba(0,0,0,0.3); text-decoration: none; - color: #000; - font-weight: 700; - display: inline-flex; - align-items: center; - margin-top: auto; + animation: pulse-tg 2s infinite; } -.link-arrow i { transition: transform 0.2s; margin-left: 5px; } -.link-arrow:hover i { transform: translateX(5px); } - -/* About */ -.about-image-stack { - position: relative; - height: 400px; - width: 100%; +.tg-btn:hover { + color: #fff; } -.stack-card { - position: absolute; - width: 80%; - height: 100%; - border-radius: var(--radius-card); - border: 2px solid #000; - box-shadow: var(--shadow-hard); - left: 10%; - transform: rotate(-3deg); - background-size: cover; +.tg-text { + display: block; + font-size: 12px; + margin-top: 5px; + background: rgba(0,0,0,0.7); + color: #fff; + padding: 2px 8px; + border-radius: 10px; } -/* Forms */ -.form-control { - border: 2px solid #000; - border-radius: 0.5rem; - padding: 1rem; - font-weight: 500; - background: #f8f9fa; +@keyframes pulse-tg { + 0% { box-shadow: 0 0 0 0 rgba(0, 136, 204, 0.7); } + 70% { box-shadow: 0 0 0 20px rgba(0, 136, 204, 0); } + 100% { box-shadow: 0 0 0 0 rgba(0, 136, 204, 0); } } -.form-control:focus { - box-shadow: 4px 4px 0 var(--color-primary); - border-color: #000; +/* Back to Top */ +#back-to-top { + position: fixed; + bottom: 30px; + right: 30px; + display: none; + z-index: 1001; +} + +/* Content Cards */ +.card { + border: none; + border-radius: 12px; + box-shadow: 0 5px 15px rgba(0,0,0,0.05); + margin-bottom: 30px; +} + +.card-header { background: #fff; + border-bottom: 1px solid #eee; + font-weight: bold; + padding: 15px 25px; } -/* Animations */ -.animate-up { - opacity: 0; - transform: translateY(30px); - animation: fadeUp 0.8s ease forwards; +.step-badge { + background: var(--primary-color); + color: #fff; + padding: 5px 15px; + border-radius: 20px; + font-size: 0.8rem; } -.delay-100 { animation-delay: 0.1s; } -.delay-200 { animation-delay: 0.2s; } - -@keyframes fadeUp { - to { - opacity: 1; - transform: translateY(0); - } +/* Example Sections */ +.example-box { + padding: 20px; + border-radius: 8px; + margin-bottom: 20px; } -/* Social */ -.social-links a { - transition: transform 0.2s; - display: inline-block; -} -.social-links a:hover { - transform: scale(1.2) rotate(10deg); - color: var(--color-accent) !important; +.correct-box { + background-color: #e8f5e9; + border-left: 5px solid #4caf50; } -/* Responsive */ -@media (max-width: 991px) { - .rotate-divider { - transform: rotate(0); - margin-top: 0; - margin-bottom: 2rem; - } - - .hero-section { - padding-top: 120px; - text-align: center; - min-height: auto; - padding-bottom: 100px; - } - - .display-1 { font-size: 3.5rem; } - - .blob-1 { width: 300px; height: 300px; right: -20%; } - .blob-2 { width: 300px; height: 300px; left: -20%; } +.wrong-box { + background-color: #ffebee; + border-left: 5px solid #f44336; } + +footer { + padding: 40px 0; + text-align: center; + border-top: 1px solid #eee; + margin-top: 50px; +} + +@media (max-width: 768px) { + #sidebar { margin-left: -var(--sidebar-width); } + #sidebar.active { margin-left: 0; } + #content { width: 100%; margin-left: 0; } + #content.active { margin-left: var(--sidebar-width); } +} \ No newline at end of file diff --git a/assets/js/main.js b/assets/js/main.js index fdf2cfd..bb71034 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -1,73 +1,41 @@ -document.addEventListener('DOMContentLoaded', () => { - - // Smooth scrolling for navigation links - document.querySelectorAll('a[href^="#"]').forEach(anchor => { - anchor.addEventListener('click', function (e) { - e.preventDefault(); - const targetId = this.getAttribute('href'); - if (targetId === '#') return; - - const targetElement = document.querySelector(targetId); - if (targetElement) { - // Close mobile menu if open - const navbarToggler = document.querySelector('.navbar-toggler'); - const navbarCollapse = document.querySelector('.navbar-collapse'); - if (navbarCollapse.classList.contains('show')) { - navbarToggler.click(); - } +document.addEventListener('DOMContentLoaded', function () { + const sidebar = document.getElementById('sidebar'); + const content = document.getElementById('content'); + const sidebarCollapse = document.getElementById('sidebarCollapse'); + const backToTop = document.getElementById('back-to-top'); - // Scroll with offset - const offset = 80; - const elementPosition = targetElement.getBoundingClientRect().top; - const offsetPosition = elementPosition + window.pageYOffset - offset; - - window.scrollTo({ - top: offsetPosition, - behavior: "smooth" - }); - } + // Sidebar Toggle for Mobile + if (sidebarCollapse) { + sidebarCollapse.addEventListener('click', function () { + sidebar.classList.toggle('active'); + content.classList.toggle('active'); }); - }); + } - // Navbar scroll effect - const navbar = document.querySelector('.navbar'); - window.addEventListener('scroll', () => { - if (window.scrollY > 50) { - navbar.classList.add('scrolled', 'shadow-sm', 'bg-white'); - navbar.classList.remove('bg-transparent'); + // Back to Top functionality + window.addEventListener('scroll', function () { + if (window.scrollY > 300) { + backToTop.style.display = 'block'; } else { - navbar.classList.remove('scrolled', 'shadow-sm', 'bg-white'); - navbar.classList.add('bg-transparent'); + backToTop.style.display = 'none'; } }); - // Intersection Observer for fade-up animations - const observerOptions = { - threshold: 0.1, - rootMargin: "0px 0px -50px 0px" - }; - - const observer = new IntersectionObserver((entries) => { - entries.forEach(entry => { - if (entry.isIntersecting) { - entry.target.classList.add('animate-up'); - entry.target.style.opacity = "1"; - observer.unobserve(entry.target); // Only animate once - } + backToTop.addEventListener('click', function () { + window.scrollTo({ + top: 0, + behavior: 'smooth' }); - }, observerOptions); - - // Select elements to animate (add a class 'reveal' to them in HTML if not already handled by CSS animation) - // For now, let's just make sure the hero animations run. - // If we want scroll animations, we'd add opacity: 0 to elements in CSS and reveal them here. - // Given the request, the CSS animation I added runs on load for Hero. - // Let's make the project cards animate in. - - const projectCards = document.querySelectorAll('.project-card'); - projectCards.forEach((card, index) => { - card.style.opacity = "0"; - card.style.animationDelay = `${index * 0.1}s`; - observer.observe(card); }); -}); \ No newline at end of file + // Close sidebar when clicking outside on mobile + document.addEventListener('click', function (event) { + const isClickInsideSidebar = sidebar.contains(event.target); + const isClickInsideCollapse = sidebarCollapse ? sidebarCollapse.contains(event.target) : false; + + if (!isClickInsideSidebar && !isClickInsideCollapse && window.innerWidth <= 768) { + sidebar.classList.remove('active'); + content.classList.remove('active'); + } + }); +}); diff --git a/assets/pasted-20260207-134833-7329dc42.jpg b/assets/pasted-20260207-134833-7329dc42.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f8709599cf4bff4ae5df917e5892f6290a34ad8a GIT binary patch literal 49691 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

M9{b^3klhwIkJq@D3 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 literal 0 HcmV?d00001 diff --git a/db/init.php b/db/init.php new file mode 100644 index 0000000..5665364 --- /dev/null +++ b/db/init.php @@ -0,0 +1,68 @@ +exec("CREATE TABLE IF NOT EXISTS users ( + id INT AUTO_INCREMENT PRIMARY KEY, + username VARCHAR(50) NOT NULL UNIQUE, + password VARCHAR(255) NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + )"); + + // Create settings table + $pdo->exec("CREATE TABLE IF NOT EXISTS settings ( + id INT AUTO_INCREMENT PRIMARY KEY, + setting_key VARCHAR(50) NOT NULL UNIQUE, + setting_value TEXT, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP + )"); + + // Create steps table + $pdo->exec("CREATE TABLE IF NOT EXISTS steps ( + id INT AUTO_INCREMENT PRIMARY KEY, + day_number INT NOT NULL UNIQUE, + title VARCHAR(255), + what_to_chat TEXT, + how_to_chat TEXT, + why_to_chat TEXT, + correct_example TEXT, + wrong_example TEXT, + correct_explanation TEXT, + wrong_explanation TEXT, + image_url VARCHAR(255), + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP + )"); + + // Seed default admin if not exists + $stmt = $pdo->prepare("SELECT COUNT(*) FROM users WHERE username = 'admin'"); + $stmt->execute(); + if ($stmt->fetchColumn() == 0) { + $password = password_hash('admin123', PASSWORD_DEFAULT); + $pdo->prepare("INSERT INTO users (username, password) VALUES ('admin', ?)")->execute([$password]); + } + + // Seed default settings + $defaultSettings = [ + 'site_title' => '财神组聊天框架', + 'site_logo' => 'assets/pasted-20260207-134833-7329dc42.jpg', + 'tg_link' => 'https://t.me/zhangshihao818', + 'footer_copy' => '© 2026 财神组聊天框架构造. 内部资料,翻版必究。', + 'watermark_text' => '财神组专用字体' + ]; + + foreach ($defaultSettings as $key => $val) { + $pdo->prepare("INSERT IGNORE INTO settings (setting_key, setting_value) VALUES (?, ?)")->execute([$key, $val]); + } + + // Seed default steps 1-7 + for ($i = 1; $i <= 7; $i++) { + $pdo->prepare("INSERT IGNORE INTO steps (day_number, title) VALUES (?, ?)")->execute([$i, "第{$i}天:初步沟通"]); + } + +} catch (PDOException $e) { + error_log("DB Init Error: " . $e->getMessage()); +} \ No newline at end of file diff --git a/index.php b/index.php index 7205f3d..e976b3c 100644 --- a/index.php +++ b/index.php @@ -1,150 +1,194 @@ query("SELECT setting_key, setting_value FROM settings"); +while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $settings[$row['setting_key']] = $row['setting_value']; +} + +$site_title = $settings['site_title'] ?? '财神组聊天框架'; +$tg_link = $settings['tg_link'] ?? 'https://t.me/zhangshihao818'; +$footer_copy = $settings['footer_copy'] ?? '© 2026 财神组聊天框架构造. 内部资料,翻版必究。'; +$watermark_text = $settings['watermark_text'] ?? '财神组专用字体'; +$site_logo = $settings['site_logo'] ?? 'assets/pasted-20260207-134833-7329dc42.jpg'; + +// Get current day from URL +$current_day = isset($_GET['day']) ? (int)$_GET['day'] : 1; +if ($current_day < 1 || $current_day > 7) $current_day = 1; + +// Fetch step data +$stmt = $pdo->prepare("SELECT * FROM steps WHERE day_number = ?"); +$stmt->execute([$current_day]); +$step = $stmt->fetch(PDO::FETCH_ASSOC); + +if (!$step) { + $step = [ + 'day_number' => $current_day, + 'title' => "第{$current_day}天:步骤加载中", + 'what_to_chat' => '暂无内容', + 'how_to_chat' => '暂无内容', + 'why_to_chat' => '暂无内容', + 'correct_example' => '暂无内容', + 'wrong_example' => '暂无内容', + 'correct_explanation' => '暂无内容', + 'wrong_explanation' => '暂无内容', + 'image_url' => '' + ]; +} ?> - - + + - - - New Style - - - - - - - - - - - - - - - - - - - + + + <?php echo htmlspecialchars($site_title); ?> + + + + -

-
-

Analyzing your requirements and generating your website…

-
- Loading… -
-

AI is collecting your requirements and applying the first changes.

-

This page will update automatically as the plan is implemented.

-

Runtime: PHP — UTC

+ + +
+
+ + + +
-
-
- Page updated: (UTC) -
+ + +
+ + + + 联系客服 +
+ + + + +
+ + + + +
+
+
+

Day

+ +
+ +
+
+
+
聊什么 (Content)
+
+

+
+
+ +
+
为什么要这样聊 (Reasoning)
+
+

+
+
+ +
+
+
+
正确做法
+
+
+ 示例:
+ +
+ 解释:
+ +
+
+
+
+
+
错误做法
+
+
+ 示例:
+ +
+ 解释:
+ +
+
+
+
+
+ +
+
+
怎么去聊 (Technique)
+
+

+
+
+ +
+
聊天示例图
+
+ + Example + +
+
+ 示例图片后续上传 +
+ +
+
+
+
+ +
+

+
+
+
+
+ + + diff --git a/login.php b/login.php new file mode 100644 index 0000000..485784b --- /dev/null +++ b/login.php @@ -0,0 +1,73 @@ +query("SELECT setting_value FROM settings WHERE setting_key = 'site_logo'"); +$site_logo = $stmt->fetchColumn() ?: 'assets/pasted-20260207-134833-7329dc42.jpg'; + +$error = ''; + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + $username = $_POST['username'] ?? ''; + $password = $_POST['password'] ?? ''; + + if ($username === 'admin') { + $stmt = $pdo->prepare("SELECT password FROM users WHERE username = 'admin'"); + $stmt->execute(); + $user = $stmt->fetch(); + + if ($user && password_verify($password, $user['password'])) { + $_SESSION['admin_logged_in'] = true; + header('Location: admin.php'); + exit; + } else { + $error = '用户名或密码错误'; + } + } else { + $error = '权限不足'; + } +} +?> + + + + + + 登录 - 财神组聊天框架 + + + + + + + + \ No newline at end of file diff --git a/logout.php b/logout.php new file mode 100644 index 0000000..37bc5ab --- /dev/null +++ b/logout.php @@ -0,0 +1,5 @@ +