{"id":7,"date":"2026-09-08T00:45:12","date_gmt":"2026-09-07T16:45:12","guid":{"rendered":"https:\/\/www.ssouq.xyz\/index.php\/2026\/09\/08\/php-mysql-ledger\/"},"modified":"2026-09-08T00:47:36","modified_gmt":"2026-09-07T16:47:36","slug":"php-mysql-ledger","status":"publish","type":"post","link":"https:\/\/www.ssouq.xyz\/index.php\/2026\/09\/08\/php-mysql-ledger\/","title":{"rendered":"\u8bb0\u8d26\u672c Ledger \u2014 \u8f7b\u91cf\u7ea7 PHP + MySQL \u4e2a\u4eba\u8bb0\u8d26\u7cfb\u7edf"},"content":{"rendered":"<style>\n\/* \u2550\u2550\u2550 \u8bb0\u8d26\u672c\u5ba3\u4f20\u9875 - \u9ad8\u7aef\u8bbe\u8ba1 \u2550\u2550\u2550 *\/\n.ledger-hero{position:relative;background:linear-gradient(135deg,#0f0f1a 0%,#1a1a2e 40%,#16213e 70%,#0f3460 100%);border-radius:24px;padding:60px 40px;text-align:center;overflow:hidden;margin:0 0 40px 0}\n.ledger-hero::before{content:'';position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(79,70,229,.15) 0%,transparent 50%);animation:heroGlow 8s ease-in-out infinite alternate}\n@keyframes heroGlow{0%{transform:translate(0,0)}100%{transform:translate(30px,30px)}}\n.ledger-hero-inner{position:relative;z-index:1}\n.ledger-badge{display:inline-block;padding:6px 18px;background:rgba(79,70,229,.3);border:1px solid rgba(79,70,229,.5);border-radius:100px;font-size:12px;color:#a5b4fc;font-weight:600;letter-spacing:1px;margin-bottom:20px;text-transform:uppercase}\n.ledger-hero h1{font-size:42px;font-weight:800;color:#fff;margin:0 0 12px 0;line-height:1.2;background:linear-gradient(135deg,#fff 0%,#a5b4fc 50%,#c4b5fd 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}\n.ledger-hero .tagline{font-size:17px;color:#94a3b8;margin:0 0 28px 0;line-height:1.6}\n.ledger-hero-meta{display:flex;justify-content:center;gap:32px;flex-wrap:wrap;margin-top:24px}\n.ledger-hero-meta .meta-item{text-align:center}\n.ledger-hero-meta .meta-num{font-size:28px;font-weight:800;color:#a5b4fc;font-family:'Courier New',monospace}\n.ledger-hero-meta .meta-label{font-size:12px;color:#64748b;margin-top:2px}\n.ledger-hero-download{display:inline-flex;align-items:center;gap:10px;padding:16px 40px;background:linear-gradient(135deg,#4f46e5,#7c3aed);color:#fff;text-decoration:none;border-radius:14px;font-size:17px;font-weight:700;box-shadow:0 8px 32px rgba(79,70,229,.4);transition:all .3s ease;margin-top:8px}\n.ledger-hero-download:hover{transform:translateY(-2px);box-shadow:0 12px 40px rgba(79,70,229,.5)}<\/p>\n<p>\/* \u2550\u2550\u2550 \u7279\u6027\u5361\u7247 \u2550\u2550\u2550 *\/\n.ledger-features{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin:0 0 40px 0}\n.ledger-feature-card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:28px 24px;transition:all .3s ease;position:relative;overflow:hidden}\n.ledger-feature-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#4f46e5,#7c3aed);transform:scaleX(0);transform-origin:left;transition:transform .3s ease}\n.ledger-feature-card:hover{border-color:#c4b5fd;box-shadow:0 8px 24px rgba(79,70,229,.1);transform:translateY(-2px)}\n.ledger-feature-card:hover::before{transform:scaleX(1)}\n.ledger-feature-icon{width:48px;height:48px;border-radius:12px;background:linear-gradient(135deg,#e0e7ff,#ddd6fe);display:flex;align-items:center;justify-content:center;font-size:24px;margin-bottom:16px}\n.ledger-feature-card h3{font-size:16px;font-weight:700;color:#1e293b;margin:0 0 8px 0}\n.ledger-feature-card p{font-size:13px;color:#64748b;line-height:1.6;margin:0}<\/p>\n<p>\/* \u2550\u2550\u2550 \u53cc\u7aef\u5c55\u793a \u2550\u2550\u2550 *\/\n.ledger-platforms{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-radius:20px;padding:40px;margin:0 0 40px 0}\n.ledger-platforms h2{text-align:center;font-size:24px;font-weight:800;color:#1e293b;margin:0 0 28px 0}\n.ledger-platform-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}\n.ledger-platform-card{background:#fff;border-radius:16px;padding:28px;border:1px solid #e2e8f0}\n.ledger-platform-card .platform-badge{display:inline-block;padding:4px 12px;border-radius:100px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px}\n.ledger-platform-card .platform-badge.pc{background:#e0e7ff;color:#4f46e5}\n.ledger-platform-card .platform-badge.mobile{background:#fce7f3;color:#db2777}\n.ledger-platform-card h3{font-size:18px;font-weight:700;color:#1e293b;margin:0 0 12px 0}\n.ledger-platform-card ul{list-style:none;padding:0;margin:0}\n.ledger-platform-card ul li{font-size:13px;color:#64748b;padding:6px 0;padding-left:24px;position:relative;line-height:1.5}\n.ledger-platform-card ul li::before{content:'\u2713';position:absolute;left:0;color:#4f46e5;font-weight:700}\n@media(max-width:768px){.ledger-platform-grid{grid-template-columns:1fr}}<\/p>\n<p>\/* \u2550\u2550\u2550 \u6280\u672f\u67b6\u6784 \u2550\u2550\u2550 *\/\n.ledger-tech{background:#0f0f1a;border-radius:20px;padding:40px;margin:0 0 40px 0}\n.ledger-tech h2{text-align:center;font-size:24px;font-weight:800;color:#fff;margin:0 0 28px 0}\n.ledger-tech-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}\n.ledger-tech-item{text-align:center;padding:20px 16px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);border-radius:12px}\n.ledger-tech-item .tech-icon{font-size:28px;margin-bottom:8px}\n.ledger-tech-item .tech-name{font-size:14px;font-weight:700;color:#a5b4fc;margin-bottom:4px}\n.ledger-tech-item .tech-desc{font-size:12px;color:#64748b}<\/p>\n<p>\/* \u2550\u2550\u2550 \u5b89\u88c5\u6b65\u9aa4 \u2550\u2550\u2550 *\/\n.ledger-steps{margin:0 0 40px 0}\n.ledger-steps h2{text-align:center;font-size:24px;font-weight:800;color:#1e293b;margin:0 0 28px 0}\n.ledger-steps-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}\n.ledger-step-card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:24px;text-align:center;position:relative}\n.ledger-step-num{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#4f46e5,#7c3aed);color:#fff;font-size:16px;font-weight:800;display:flex;align-items:center;justify-content:center;margin:0 auto 12px auto}\n.ledger-step-card h3{font-size:14px;font-weight:700;color:#1e293b;margin:0 0 6px 0}\n.ledger-step-card p{font-size:12px;color:#64748b;line-height:1.5;margin:0}\n.ledger-step-code{display:block;background:#0f0f1a;color:#a5b4fc;font-size:11px;font-family:'Courier New',monospace;padding:8px 12px;border-radius:8px;margin-top:8px;text-align:left;overflow-x:auto;white-space:nowrap}<\/p>\n<p>\/* \u2550\u2550\u2550 API \u8868\u683c \u2550\u2550\u2550 *\/\n.ledger-api{margin:0 0 40px 0}\n.ledger-api h2{text-align:center;font-size:24px;font-weight:800;color:#1e293b;margin:0 0 20px 0}\n.ledger-api-table{width:100%;border-collapse:collapse;font-size:13px;border-radius:12px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.05)}\n.ledger-api-table th{background:linear-gradient(135deg,#4f46e5,#7c3aed);color:#fff;padding:12px 16px;text-align:left;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px}\n.ledger-api-table td{padding:10px 16px;border-bottom:1px solid #f1f5f9;color:#475569}\n.ledger-api-table tr:hover td{background:#f8fafc}\n.ledger-api-table .method{text-align:center;font-weight:700;font-size:11px;padding:4px 8px;border-radius:6px;display:inline-block}\n.ledger-api-table .method.get{background:#dcfce7;color:#16a34a}\n.ledger-api-table .method.post{background:#dbeafe;color:#2563eb}\n.ledger-api-table .method.delete{background:#fee2e2;color:#dc2626}\n.ledger-api-table .auth-yes{color:#dc2626;font-weight:600}\n.ledger-api-table .auth-no{color:#94a3b8}<\/p>\n<p>\/* \u2550\u2550\u2550 \u7edf\u8ba1\u6570\u636e \u2550\u2550\u2550 *\/\n.ledger-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:16px;margin:0 0 40px 0}\n.ledger-stat-card{background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:16px;padding:24px;text-align:center;color:#fff}\n.ledger-stat-card .stat-num{font-size:32px;font-weight:800;font-family:'Courier New',monospace;line-height:1}\n.ledger-stat-card .stat-label{font-size:12px;color:rgba(255,255,255,.8);margin-top:4px}<\/p>\n<p>\/* \u2550\u2550\u2550 \u4e0b\u8f7d\u533a\u57df \u2550\u2550\u2550 *\/\n.ledger-download-section{background:linear-gradient(135deg,#0f0f1a 0%,#1a1a2e 50%,#0f3460 100%);border-radius:24px;padding:48px 40px;text-align:center;margin:0 0 20px 0;position:relative;overflow:hidden}\n.ledger-download-section::before{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 50% 50%,rgba(79,70,229,.2) 0%,transparent 70%)}\n.ledger-download-inner{position:relative;z-index:1}\n.ledger-download-section h2{font-size:28px;font-weight:800;color:#fff;margin:0 0 8px 0}\n.ledger-download-section p{font-size:14px;color:#94a3b8;margin:0 0 28px 0}\n.ledger-download-btn{display:inline-flex;align-items:center;gap:10px;padding:18px 48px;background:linear-gradient(135deg,#4f46e5,#7c3aed);color:#fff;text-decoration:none;border-radius:16px;font-size:18px;font-weight:700;box-shadow:0 8px 32px rgba(79,70,229,.5);transition:all .3s ease}\n.ledger-download-btn:hover{transform:translateY(-3px);box-shadow:0 12px 40px rgba(79,70,229,.6)}\n.ledger-download-info{display:flex;justify-content:center;gap:24px;flex-wrap:wrap;margin-top:20px}\n.ledger-download-info span{font-size:12px;color:#64748b}\n.ledger-download-info span strong{color:#a5b4fc}<\/p>\n<p>\/* \u2550\u2550\u2550 \u54cd\u5e94\u5f0f \u2550\u2550\u2550 *\/\n@media(max-width:768px){\n.ledger-hero{padding:40px 20px;border-radius:16px}\n.ledger-hero h1{font-size:28px}\n.ledger-hero .tagline{font-size:14px}\n.ledger-hero-meta{gap:16px}\n.ledger-hero-meta .meta-num{font-size:22px}\n.ledger-platforms,.ledger-tech{padding:24px 20px;border-radius:16px}\n.ledger-download-section{padding:32px 20px;border-radius:16px}\n.ledger-download-btn{padding:14px 32px;font-size:16px}\n.ledger-api-table{font-size:11px}\n.ledger-api-table th,.ledger-api-table td{padding:8px 10px}\n}\n<\/style>\n<p><!-- \u2550\u2550\u2550 HERO \u2550\u2550\u2550 --><\/p>\n<div class=\"ledger-hero\">\n<div class=\"ledger-hero-inner\">\n<span class=\"ledger-badge\">PHP + MySQL \u00b7 v1.2.1<\/span><\/p>\n<h1>\u8bb0\u8d26\u672c Ledger<\/h1>\n<p class=\"tagline\">\u8f7b\u91cf\u7ea7\u4e2a\u4eba\u8bb0\u8d26\u7cfb\u7edf \u00b7 \u591a\u8d26\u6237\u7ba1\u7406 \u00b7 \u6536\u652f\u8f6c\u8d26 \u00b7 \u667a\u80fd\u7edf\u8ba1\u5206\u6790<br \/>PC \u7aef\u4e0e\u79fb\u52a8\u7aef\u53cc\u7aef\u81ea\u9002\u5e94 \u00b7 \u4e00\u952e\u5b89\u88c5 \u00b7 \u6a21\u5757\u5316\u67b6\u6784<\/p>\n<p><a href=\"https:\/\/www.ssouq.xyz\/wp-content\/uploads\/2026\/09\/ledger-deploy.zip\" download class=\"ledger-hero-download\"><br \/>\n\u2b07 \u7acb\u5373\u4e0b\u8f7d (65KB)<br \/>\n<\/a><\/p>\n<div class=\"ledger-hero-meta\">\n<div class=\"meta-item\">\n<div class=\"meta-num\">4<\/div>\n<div class=\"meta-label\">\u4e1a\u52a1\u6a21\u5757<\/div>\n<\/div>\n<div class=\"meta-item\">\n<div class=\"meta-num\">13<\/div>\n<div class=\"meta-label\">API \u63a5\u53e3<\/div>\n<\/div>\n<div class=\"meta-item\">\n<div class=\"meta-num\">3<\/div>\n<div class=\"meta-label\">\u6570\u636e\u8868<\/div>\n<\/div>\n<div class=\"meta-item\">\n<div class=\"meta-num\">0<\/div>\n<div class=\"meta-label\">\u6846\u67b6\u4f9d\u8d56<\/div>\n<\/div>\n<div class=\"meta-item\">\n<div class=\"meta-num\">65K<\/div>\n<div class=\"meta-label\">\u5305\u5927\u5c0f<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- \u2550\u2550\u2550 \u6838\u5fc3\u529f\u80fd \u2550\u2550\u2550 --><\/p>\n<div class=\"ledger-features\">\n<div class=\"ledger-feature-card\">\n<div class=\"ledger-feature-icon\">\ud83d\udd10<\/div>\n<h3>\u7528\u6237\u8ba4\u8bc1<\/h3>\n<p>\u6ce8\u518c \/ \u767b\u5f55 \/ Session \u6301\u4e45\u5316\uff0c\u591a\u7528\u6237\u6570\u636e\u9694\u79bb\uff0cCSRF \u9632\u62a4<\/p>\n<\/div>\n<div class=\"ledger-feature-card\">\n<div class=\"ledger-feature-icon\">\ud83d\udcb3<\/div>\n<h3>\u8d26\u6237\u7ba1\u7406<\/h3>\n<p>\u521b\u5efa \/ \u5220\u9664\u8d26\u6237\uff0c\u652f\u6301\u50a8\u84c4\u5361\u3001\u5fae\u4fe1\u3001\u652f\u4ed8\u5b9d\u7b49\u591a\u79cd\u7c7b\u578b\uff0c\u4f59\u989d\u5b9e\u65f6\u8ba1\u7b97<\/p>\n<\/div>\n<div class=\"ledger-feature-card\">\n<div class=\"ledger-feature-icon\">\ud83d\udcb8<\/div>\n<h3>\u4ea4\u6613\u8bb0\u5f55<\/h3>\n<p>\u6536\u5165\u8bb0\u5f55\u3001\u652f\u51fa\u8bb0\u5f55\u3001\u8d26\u6237\u95f4\u8f6c\u8d26\uff0c\u81ea\u52a8\u5206\u7c7b\u4e0e\u63cf\u8ff0\u6807\u6ce8<\/p>\n<\/div>\n<div class=\"ledger-feature-card\">\n<div class=\"ledger-feature-icon\">\ud83d\udcca<\/div>\n<h3>\u7edf\u8ba1\u5206\u6790<\/h3>\n<p>\u5206\u7c7b\u6392\u884c\u3001\u6708\u5ea6\u8d8b\u52bf\u3001\u8d44\u4ea7\u5206\u5e03\u3001\u667a\u80fd\u6d1e\u5bdf\uff0c\u591a\u7ef4\u5ea6\u53ef\u89c6\u5316<\/p>\n<\/div>\n<div class=\"ledger-feature-card\">\n<div class=\"ledger-feature-icon\">\ud83d\udcf1<\/div>\n<h3>\u53cc\u7aef\u9002\u914d<\/h3>\n<p>PC \u7aef\u4fa7\u8fb9\u680f\u5e03\u5c40 + \u79fb\u52a8\u7aef\u5e95\u90e8\u5bfc\u822a\uff0c768px \u65ad\u70b9\u81ea\u52a8\u5207\u6362<\/p>\n<\/div>\n<div class=\"ledger-feature-card\">\n<div class=\"ledger-feature-icon\">\u26a1<\/div>\n<h3>\u4e00\u952e\u5b89\u88c5<\/h3>\n<p>Web \u4e09\u6b65\u5b89\u88c5\u5411\u5bfc + CLI \u547d\u4ee4\u884c\uff0c\u81ea\u52a8\u5efa\u5e93\u5efa\u8868\uff0c\u5b89\u88c5\u9501\u9632\u62a4<\/p>\n<\/div>\n<\/div>\n<p><!-- \u2550\u2550\u2550 \u53cc\u7aef\u5c55\u793a \u2550\u2550\u2550 --><\/p>\n<div class=\"ledger-platforms\">\n<h2>\u53cc\u7aef\u81ea\u9002\u5e94\u5e03\u5c40<\/h2>\n<div class=\"ledger-platform-grid\">\n<div class=\"ledger-platform-card\">\n<span class=\"platform-badge pc\">PC \u7aef<\/span><\/p>\n<h3>\u4fa7\u8fb9\u680f\u5e03\u5c40<\/h3>\n<ul>\n<li>\u5de6\u4fa7\u6e10\u53d8\u5bfc\u822a\u680f\uff0c\u7528\u6237\u4fe1\u606f\u5c55\u793a<\/li>\n<li>\u9876\u680f\u663e\u793a\u603b\u8d44\u4ea7\u3001\u6708\u6536\u5165\u3001\u6708\u652f\u51fa<\/li>\n<li>\u9996\u9875 4 \u5217\u7edf\u8ba1\u5361\u7247 + \u53cc\u680f\u5185\u5bb9<\/li>\n<li>\u8d26\u6237\u9875\u8868\u683c\u5217\u8868 + \u6dfb\u52a0\u8868\u5355\u53cc\u680f<\/li>\n<li>\u4ea4\u6613\u8bb0\u5f55\u8868\u683c\u5316\u5c55\u793a<\/li>\n<li>\u7edf\u8ba1\u9875\u53cc\u680f\u56fe\u8868\u5e03\u5c40<\/li>\n<\/ul>\n<\/div>\n<div class=\"ledger-platform-card\">\n<span class=\"platform-badge mobile\">\u79fb\u52a8\u7aef<\/span><\/p>\n<h3>\u5e95\u90e8\u5bfc\u822a\u680f<\/h3>\n<ul>\n<li>\u5355\u680f\u5361\u7247\u5e03\u5c40\uff0c\u7d27\u51d1\u8868\u5355<\/li>\n<li>\u5e95\u90e8 5 \u6807\u7b7e\u5bfc\u822a\uff08\u9996\u9875\/\u8bb0\u8d26\/\u8d26\u6237\/\u8bb0\u5f55\/\u7edf\u8ba1\uff09<\/li>\n<li>2\u00d72 \u7edf\u8ba1\u7f51\u683c\uff0c\u6ed1\u52a8\u64cd\u4f5c<\/li>\n<li>\u5168\u5c4f\u767b\u5f55\u6ce8\u518c\u5361\u7247<\/li>\n<li>\u54cd\u5e94\u5f0f\u56fe\u8868\u81ea\u9002\u5e94<\/li>\n<li>viewport-fit=cover \u5b89\u5168\u533a\u9002\u914d<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- \u2550\u2550\u2550 \u6280\u672f\u67b6\u6784 \u2550\u2550\u2550 --><\/p>\n<div class=\"ledger-tech\">\n<h2>\u6280\u672f\u67b6\u6784<\/h2>\n<div class=\"ledger-tech-grid\">\n<div class=\"ledger-tech-item\">\n<div class=\"tech-icon\">\ud83d\udc18<\/div>\n<div class=\"tech-name\">PHP 8.1+<\/div>\n<div class=\"tech-desc\">\u65e0\u6846\u67b6\u4f9d\u8d56<\/div>\n<\/div>\n<div class=\"ledger-tech-item\">\n<div class=\"tech-icon\">\ud83d\udc2c<\/div>\n<div class=\"tech-name\">MySQL 8.0+<\/div>\n<div class=\"tech-desc\">InnoDB + \u5916\u952e<\/div>\n<\/div>\n<div class=\"ledger-tech-item\">\n<div class=\"tech-icon\">\ud83d\udce6<\/div>\n<div class=\"tech-name\">\u6a21\u5757\u5316<\/div>\n<div class=\"tech-desc\">modules\/packages<\/div>\n<\/div>\n<div class=\"ledger-tech-item\">\n<div class=\"tech-icon\">\ud83c\udf10<\/div>\n<div class=\"tech-name\">RESTful<\/div>\n<div class=\"tech-desc\">\u7edf\u4e00 API<\/div>\n<\/div>\n<div class=\"ledger-tech-item\">\n<div class=\"tech-icon\">\ud83c\udfa8<\/div>\n<div class=\"tech-name\">\u539f\u751f\u524d\u7aef<\/div>\n<div class=\"tech-desc\">HTML\/CSS\/JS<\/div>\n<\/div>\n<div class=\"ledger-tech-item\">\n<div class=\"tech-icon\">\ud83d\udd12<\/div>\n<div class=\"tech-name\">\u5b89\u5168<\/div>\n<div class=\"tech-desc\">CSRF + .env<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- \u2550\u2550\u2550 \u7edf\u8ba1\u6570\u636e \u2550\u2550\u2550 --><\/p>\n<div class=\"ledger-stats\">\n<div class=\"ledger-stat-card\">\n<div class=\"stat-num\">4<\/div>\n<div class=\"stat-label\">\u4e1a\u52a1\u6a21\u5757<\/div>\n<\/div>\n<div class=\"ledger-stat-card\">\n<div class=\"stat-num\">13<\/div>\n<div class=\"stat-label\">API \u63a5\u53e3<\/div>\n<\/div>\n<div class=\"ledger-stat-card\">\n<div class=\"stat-num\">3<\/div>\n<div class=\"stat-label\">\u6570\u636e\u8868<\/div>\n<\/div>\n<div class=\"ledger-stat-card\">\n<div class=\"stat-num\">65K<\/div>\n<div class=\"stat-label\">\u5305\u5927\u5c0f<\/div>\n<\/div>\n<\/div>\n<p><!-- \u2550\u2550\u2550 \u5b89\u88c5\u6b65\u9aa4 \u2550\u2550\u2550 --><\/p>\n<div class=\"ledger-steps\">\n<h2>\u56db\u6b65\u5b89\u88c5<\/h2>\n<div class=\"ledger-steps-grid\">\n<div class=\"ledger-step-card\">\n<div class=\"ledger-step-num\">1<\/div>\n<h3>\u4e0a\u4f20\u6587\u4ef6<\/h3>\n<p>\u4e0b\u8f7d\u7a0b\u5e8f\u5305\uff0c\u89e3\u538b\u4e0a\u4f20\u5230\u7f51\u7ad9\u6839\u76ee\u5f55<\/p>\n<\/div>\n<div class=\"ledger-step-card\">\n<div class=\"ledger-step-num\">2<\/div>\n<h3>\u914d\u7f6e\u4f2a\u9759\u6001<\/h3>\n<p>Nginx \u6dfb\u52a0 URL \u91cd\u5199\u89c4\u5219<\/p>\n<p><code class=\"ledger-step-code\">location \/ { try_files $uri $uri\/ \/gateway\/index.php?$query_string; }<\/code>\n<\/div>\n<div class=\"ledger-step-card\">\n<div class=\"ledger-step-num\">3<\/div>\n<h3>\u8fd0\u884c\u5b89\u88c5<\/h3>\n<p>\u8bbf\u95ee install.php\uff0c\u586b\u5199\u6570\u636e\u5e93\u4fe1\u606f\uff0c\u81ea\u52a8\u5efa\u8868<\/p>\n<p><code class=\"ledger-step-code\">http:\/\/\u57df\u540d\/install.php<\/code>\n<\/div>\n<div class=\"ledger-step-card\">\n<div class=\"ledger-step-num\">4<\/div>\n<h3>\u5b89\u5168\u5904\u7406<\/h3>\n<p>\u5220\u9664 install.php\uff0c\u786e\u8ba4 .env \u6743\u9650\uff0c\u5f00\u542f HTTPS<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- \u2550\u2550\u2550 API \u63a5\u53e3 \u2550\u2550\u2550 --><\/p>\n<div class=\"ledger-api\">\n<h2>RESTful API<\/h2>\n<table class=\"ledger-api-table\">\n<tr>\n<th>\u65b9\u6cd5<\/th>\n<th>\u8def\u5f84<\/th>\n<th>\u63cf\u8ff0<\/th>\n<th>\u8ba4\u8bc1<\/th>\n<\/tr>\n<tr>\n<td><span class=\"method post\">POST<\/span><\/td>\n<td>\/api\/v1\/auth\/register<\/td>\n<td>\u7528\u6237\u6ce8\u518c<\/td>\n<td><span class=\"auth-no\">\u5426<\/span><\/td>\n<\/tr>\n<tr>\n<td><span class=\"method post\">POST<\/span><\/td>\n<td>\/api\/v1\/auth\/login<\/td>\n<td>\u7528\u6237\u767b\u5f55<\/td>\n<td><span class=\"auth-no\">\u5426<\/span><\/td>\n<\/tr>\n<tr>\n<td><span class=\"method post\">POST<\/span><\/td>\n<td>\/api\/v1\/auth\/logout<\/td>\n<td>\u9000\u51fa\u767b\u5f55<\/td>\n<td><span class=\"auth-yes\">\u662f<\/span><\/td>\n<\/tr>\n<tr>\n<td><span class=\"method get\">GET<\/span><\/td>\n<td>\/api\/v1\/accounts<\/td>\n<td>\u8d26\u6237\u5217\u8868<\/td>\n<td><span class=\"auth-yes\">\u662f<\/span><\/td>\n<\/tr>\n<tr>\n<td><span class=\"method post\">POST<\/span><\/td>\n<td>\/api\/v1\/accounts<\/td>\n<td>\u521b\u5efa\u8d26\u6237<\/td>\n<td><span class=\"auth-yes\">\u662f<\/span><\/td>\n<\/tr>\n<tr>\n<td><span class=\"method delete\">DEL<\/span><\/td>\n<td>\/api\/v1\/accounts\/:id<\/td>\n<td>\u5220\u9664\u8d26\u6237<\/td>\n<td><span class=\"auth-yes\">\u662f<\/span><\/td>\n<\/tr>\n<tr>\n<td><span class=\"method get\">GET<\/span><\/td>\n<td>\/api\/v1\/transactions<\/td>\n<td>\u4ea4\u6613\u5217\u8868<\/td>\n<td><span class=\"auth-yes\">\u662f<\/span><\/td>\n<\/tr>\n<tr>\n<td><span class=\"method post\">POST<\/span><\/td>\n<td>\/api\/v1\/transactions<\/td>\n<td>\u521b\u5efa\u4ea4\u6613<\/td>\n<td><span class=\"auth-yes\">\u662f<\/span><\/td>\n<\/tr>\n<tr>\n<td><span class=\"method get\">GET<\/span><\/td>\n<td>\/api\/v1\/stats\/overview<\/td>\n<td>\u7edf\u8ba1\u6982\u89c8<\/td>\n<td><span class=\"auth-yes\">\u662f<\/span><\/td>\n<\/tr>\n<tr>\n<td><span class=\"method get\">GET<\/span><\/td>\n<td>\/api\/v1\/stats\/category<\/td>\n<td>\u5206\u7c7b\u6392\u884c<\/td>\n<td><span class=\"auth-yes\">\u662f<\/span><\/td>\n<\/tr>\n<tr>\n<td><span class=\"method get\">GET<\/span><\/td>\n<td>\/api\/v1\/stats\/monthly<\/td>\n<td>\u6708\u5ea6\u8d8b\u52bf<\/td>\n<td><span class=\"auth-yes\">\u662f<\/span><\/td>\n<\/tr>\n<tr>\n<td><span class=\"method get\">GET<\/span><\/td>\n<td>\/api\/v1\/stats\/distribution<\/td>\n<td>\u8d44\u4ea7\u5206\u5e03<\/td>\n<td><span class=\"auth-yes\">\u662f<\/span><\/td>\n<\/tr>\n<tr>\n<td><span class=\"method get\">GET<\/span><\/td>\n<td>\/api\/v1\/stats\/insights<\/td>\n<td>\u667a\u80fd\u6d1e\u5bdf<\/td>\n<td><span class=\"auth-yes\">\u662f<\/span><\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p><!-- \u2550\u2550\u2550 \u4e0b\u8f7d\u533a\u57df \u2550\u2550\u2550 --><\/p>\n<div class=\"ledger-download-section\">\n<div class=\"ledger-download-inner\">\n<h2>\u5f00\u59cb\u4f7f\u7528<\/h2>\n<p>\u4e0b\u8f7d\u7a0b\u5e8f\u5305\uff0c\u6309\u4e0a\u65b9\u6b65\u9aa4\u5b89\u88c5\u5373\u53ef\u4f7f\u7528<\/p>\n<p><a href=\"https:\/\/www.ssouq.xyz\/wp-content\/uploads\/2026\/09\/ledger-deploy.zip\" download class=\"ledger-download-btn\"><br \/>\n\u2b07 \u4e0b\u8f7d\u8bb0\u8d26\u672c Ledger (65KB)<br \/>\n<\/a><\/p>\n<div class=\"ledger-download-info\">\n<span>\u7248\u672c <strong>v1.2.1<\/strong><\/span><br \/>\n<span>\u5927\u5c0f <strong>65KB<\/strong><\/span><br \/>\n<span>\u6f14\u793a\u8d26\u53f7 <strong>demo \/ 123456<\/strong><\/span><br \/>\n<span>\u8bb8\u53ef\u8bc1 <strong>MIT<\/strong><\/span>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u8f7b\u91cf\u7ea7\u4e2a\u4eba\u8bb0\u8d26\u7cfb\u7edf\uff0c\u652f\u6301\u591a\u8d26\u6237\u7ba1\u7406\u3001\u6536\u652f\u8f6c\u8d26\u3001\u667a\u80fd\u7edf\u8ba1\u5206\u6790\uff0cPC\u7aef\u4e0e\u79fb\u52a8\u7aef\u53cc\u7aef\u81ea\u9002\u5e94\uff0c\u4e00\u952e\u5b89\u88c5\u90e8\u7f72\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-7","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.ssouq.xyz\/index.php\/wp-json\/wp\/v2\/posts\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ssouq.xyz\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ssouq.xyz\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ssouq.xyz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ssouq.xyz\/index.php\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":1,"href":"https:\/\/www.ssouq.xyz\/index.php\/wp-json\/wp\/v2\/posts\/7\/revisions"}],"predecessor-version":[{"id":9,"href":"https:\/\/www.ssouq.xyz\/index.php\/wp-json\/wp\/v2\/posts\/7\/revisions\/9"}],"wp:attachment":[{"href":"https:\/\/www.ssouq.xyz\/index.php\/wp-json\/wp\/v2\/media?parent=7"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ssouq.xyz\/index.php\/wp-json\/wp\/v2\/categories?post=7"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ssouq.xyz\/index.php\/wp-json\/wp\/v2\/tags?post=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}