better-staridc-MNBT
1<?php
2if($egn=='setwz') {
3 $copy=daddslashes($_POST['gg']);
4 $sitename=daddslashes($_POST['qq']);
5 $kfqq=daddslashes($_POST['yzm']);
6 $zjyx = daddslashes($_POST['zjyx']);
7 $sql="update `MN_config` set `gg` =?,`qqh` =?,`yzm` =?,`zjyxbd`=? where `id`=?";
8 logjl($user,'网站设置','对网站的设置进行了修改','修改成功',$DB);
9 if($DB->query_prepare($sql,[$copy,$sitename,$kfqq,$zjyx,$siteid]))json_exit('修改成功'); else json_exit('修改失败'.$DB->error());
10 return;
11}
12if($egn=='setapi') {
13 $apikey=daddslashes($_POST['apikey']);
14 $apiqk=daddslashes($_POST['apiqk']);
15 $lin=daddslashes($_POST['linux']);
16 $win=daddslashes($_POST['windows']);
17 logjl($user,'API设置','对网站的API设置进行了修改','修改成功',$DB);
18 $sql="update `MN_config` set `api` =?, `apiqk` =?, `hxi` =?, `hxo` =? where `id`=?";
19 if($DB->query_prepare($sql,[$apikey,$apiqk,$lin,$win,$siteid]))json_exit('修改成功'); else json_exit('修改失败'.$DB->error());
20 return;
21}
22if($egn=='setapicompat') {
23 // 对外 API 协议模式开关:0=新版协议(1.83+ 严格),1=兼容 1.81 对接模块
24 $apicompat = (daddslashes($_POST['api_compat'] ?? '0') === '1') ? '1' : '0';
25 logjl($user,'API设置','对外API协议模式切换为'.($apicompat==='1'?'兼容1.81':'新版1.83+'),'修改成功',$DB);
26 $sql="update `MN_config` set `api_compat` =? where `id`=?";
27 if($DB->query_prepare($sql,[$apicompat,$siteid]))json_exit('修改成功'); else json_exit('修改失败'.$DB->error());
28 return;
29}
30if($egn=='setkzmb') {
31 $name=daddslashes($_POST['name']);
32 $ftp=daddslashes($_POST['ftp']);
33 $yzm=daddslashes($_POST['yzm']);
34 $kg=daddslashes($_POST['kg']);
35 $bq=daddslashes($_POST['bq']);
36 if(isset($_FILES['loa'])) {
37 move_uploaded_file($_FILES['loa']['tmp_name'],'../imsetes/upload_logo/logo.login.png');
38 }
39 if(isset($_FILES['lob'])) {
40 move_uploaded_file($_FILES['lob']['tmp_name'],'../imsetes/upload_logo/logo.index.png');
41 }
42 if(isset($_FILES['loc'])) {
43 move_uploaded_file($_FILES['loc']['tmp_name'],'../imsetes/upload_logo/logo.head.png');
44 }
45 $auther=md5($date);
46 logjl($user,'控制面板设置','对主机的控制面板进行了修改','修改成功',$DB);
47 $sql="update `MN_config` set `name` =?, `hxw` =?, `yzme` =?, `kzmbqk` =?, `hxp` =?, `auther` =? where `id`=?";
48 if($DB->query_prepare($sql,[$name,$ftp,$yzm,$kg,$bq,$auther,$siteid]))json_exit('修改成功'); else json_exit('修改失败'.$DB->error());
49 return;
50}
51if($egn=='setpaymethods') {
52 $raw = isset($_POST['methods']) ? $_POST['methods'] : '';
53 $data = json_decode($raw, true);
54 if (!is_array($data)) {
55 json_exit('数据格式错误');
56 }
57 // 校验并规范化
58 $clean = [];
59 $seen = [];
60 foreach ($data as $row) {
61 if (!is_array($row)) continue;
62 $plugin = isset($row['plugin']) ? preg_replace('/[^a-zA-Z0-9_\-]/', '', (string)$row['plugin']) : '';
63 $method = isset($row['method']) ? preg_replace('/[^a-zA-Z0-9_\-]/', '', (string)$row['method']) : '';
64 if ($plugin === '' || $method === '') continue;
65 $key = $plugin . '__' . $method;
66 if (isset($seen[$key])) continue;
67 $seen[$key] = true;
68 $clean[] = [
69 'plugin' => $plugin,
70 'method' => $method,
71 'display_name' => mb_substr(isset($row['display_name']) ? trim((string)$row['display_name']) : '', 0, 40),
72 'icon' => mb_substr(isset($row['icon']) ? trim((string)$row['icon']) : '', 0, 60),
73 'sort' => isset($row['sort']) ? max(0, min(999, (int)$row['sort'])) : 99,
74 ];
75 }
76 if (function_exists('mnbt_save_payment_methods') && mnbt_save_payment_methods($clean)) {
77 logjl($user, '支付设置', '保存了 ' . count($clean) . ' 个付款方式', '修改成功', $DB);
78 json_exit('修改成功');
79 }
80 json_exit('修改失败');
81 return;
82}
83if($egn=='gl') {
84 $yuser=daddslashes($_POST['yuser']);
85 $ypass=daddslashes($_POST['ypass']);
86 $xuser=daddslashes($_POST['xuser']);
87 $xpass=daddslashes($_POST['xpass']);
88 if(mb_strlen($xuser)<4 && mb_strlen($xuser)!=0 || mb_strlen($xpass)<6 && mb_strlen($xpass)!=0 )json_exit('错误!新的账号必须大于或等于4位!新的密码必须大于或等于6位!');
89 if(empty($xuser) && empty($xpass))json_exit('新的账号或密码不能都为空!');
90 if($yuser!=$conf['user'] || $ypass!=$conf['pwd']) {
91 json_exit('您输入的原账号或密码错误!');
92 }
93 if(empty($xuser)) {
94 $guser=$conf['user'];
95 } else {
96 $guser=$xuser;
97 }
98 if(empty($xpass)) {
99 $gpwd=$conf['pwd'];
100 } else {
101 $gpwd=$xpass;
102 }
103 $sql="update `MN_config` set `user` =?, `pwd` =? where `id`=?";
104 logjl($user,'管理修改','修改前账号'.$yuser.'修改前密码'.$ypass,'登陆成功',$DB);
105 if($DB->query_prepare($sql,[$guser,$gpwd,$siteid]))json_exit('修改成功'); else json_exit('修改失败'.$DB->error());
106 return;
107}
108if($egn == "mailmode")
109{
110 $host = daddslashes($_POST['host']);
111 $mailuser = daddslashes($_POST['user']);
112 $passwrod = daddslashes($_POST['password']);
113 $port = daddslashes($_POST['port']);
114 if(!$DB->query_prepare("UPDATE `MN_config` SET `mailhost` = ?, `mailuser` = ?, `mailpassword` = ?, `mailport` = ? WHERE `id` = 1", [$host, $mailuser, $passwrod, $port]))
115 {
116 json_exit('数据库操作失败请联系开发人员判断错误');
117 }
118 else
119 {
120 json_exit('修改成功');
121 }
122 return;
123}
124if($egn == "jkscsz")
125{
126 $ymkg = daddslashes($_POST['ymkg']);
127 $ymyjkg = daddslashes($_POST['ymyjkg']);
128 $ymtsyz = daddslashes($_POST['ymtsyz']);
129 $wjkg = daddslashes($_POST['wjkg']);
130 $wjyjkg = daddslashes($_POST['wjyjkg']);
131 $wjtsyz = daddslashes($_POST['wjtsyz']);
132 $opention = daddslashes($_POST['option']);
133 if(!$DB->query_prepare("UPDATE `MN_config` SET `ymjkkg` = ?, `mtyxfskg` = ?, `ymjktsyz` = ?, `wjjkkg` = ?, `mtwjfskg` = ?, `wjjktsyz` = ?, `optionzc` = ? WHERE `id` = 1", [$ymkg, $ymyjkg, $ymtsyz, $wjkg, $wjyjkg, $wjtsyz, $opention]))
134 {
135 json_exit('数据库操作失败请联系开发人员判断错误');
136 }
137 else
138 {
139 json_exit('修改成功');
140 }
141 return;
142}
143if($egn == 'save_home_settings')
144{
145 // V1.84 独立主页系统设置:home_enable / home_title / home_hero / home_primary
146 // home_logo / home_favicon / home_footer / home_show_notice / home_show_plans
147 $fields = ['home_enable','home_title','home_hero','home_primary','home_logo','home_favicon','home_footer','home_show_notice','home_show_plans'];
148 $parts = [];
149 $params = [];
150 foreach ($fields as $f) {
151 $v = daddslashes(trim((string)($_POST[$f] ?? '')));
152 if ($f === 'home_primary' && $v !== '' && !preg_match('/^#[0-9a-fA-F]{6}$/', $v)) {
153 $v = '';
154 }
155 $parts[] = "`$f` = ?";
156 $params[] = $v;
157 }
158 $params[] = $siteid;
159 $sql = "UPDATE `MN_config` SET " . implode(',', $parts) . " WHERE id = ?";
160 logjl($user, '主页设置', '修改了主页设置', '修改成功', $DB);
161 if ($DB->query_prepare($sql, $params)) {
162 // V1.84: 允许主页主题通过动作钩子处理自定义设置项
163 if (function_exists('mnbt_home_settings_save')) {
164 mnbt_home_settings_save();
165 }
166 json_exit('修改成功');
167 } else {
168 json_exit('修改失败' . $DB->error());
169 }
170 return;
171}
172if($egn == 'home_upload_icon')
173{
174 // 上传主页 Logo / Favicon,保存到 imsetes/upload_logo/,并将相对路径写入 MN_config
175 $target = ($_POST['target'] ?? '') === 'favicon' ? 'favicon' : 'logo';
176 $field = $target === 'logo' ? 'home_logo' : 'home_favicon';
177 if (empty($_FILES['icon']) || !is_array($_FILES['icon']) || (int)($_FILES['icon']['error'] ?? 1) !== 0) {
178 json_exit('未收到文件或上传失败');
179 }
180 $file = $_FILES['icon'];
181 $name = (string)($file['name'] ?? '');
182 $ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));
183 if (!in_array($ext, ['png', 'jpg', 'jpeg', 'gif', 'ico'])) {
184 json_exit('仅支持 png / jpg / gif / ico 格式');
185 }
186 $tmp = (string)($file['tmp_name'] ?? '');
187 if ($tmp === '' || !is_uploaded_file($tmp)) {
188 json_exit('文件上传异常');
189 }
190 $dir = ROOT . 'imsetes/upload_logo/';
191 if (!is_dir($dir) && !@mkdir($dir, 0755, true)) {
192 json_exit('上传目录不可写');
193 }
194 $filename = 'home_' . $target . '.' . ($ext === 'ico' ? 'ico' : 'png');
195 if (!move_uploaded_file($tmp, $dir . $filename)) {
196 json_exit('保存文件失败,请检查 imsetes/upload_logo 目录权限');
197 }
198 $url = 'imsetes/upload_logo/' . $filename;
199 if (!$DB->query_prepare("UPDATE `MN_config` SET `$field` = ? WHERE id = ?", [$url, $siteid])) {
200 json_exit('保存配置失败');
201 }
202 json_exit('上传成功');
203 return;
204}
205if($egn == 'home_upload_image')
206{
207 // 通用主页图片上传:key 必须是当前主页主题注册的 image 类型字段
208 // 保存到 imsetes/upload_logo/home_{key}.png,路径由前端随 save_home_settings 统一提交
209 $key = (string)($_POST['key'] ?? '');
210 if (!preg_match('/^[a-zA-Z_][a-zA-Z0-9_]{0,63}$/', $key)) {
211 json_exit('参数错误');
212 }
213 if (function_exists('mnbt_home_get_settings_fields')) {
214 $fields = mnbt_home_get_settings_fields();
215 $isImage = isset($fields[$key]) && ($fields[$key]['type'] ?? '') === 'image';
216 if (!$isImage) {
217 json_exit('非法字段');
218 }
219 }
220 if (empty($_FILES['image']) || !is_array($_FILES['image']) || (int)($_FILES['image']['error'] ?? 1) !== 0) {
221 json_exit('未收到文件或上传失败');
222 }
223 $file = $_FILES['image'];
224 $name = (string)($file['name'] ?? '');
225 $ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));
226 if (!in_array($ext, ['png', 'jpg', 'jpeg', 'gif', 'ico', 'webp'])) {
227 json_exit('仅支持 png / jpg / gif / webp / ico 格式');
228 }
229 $tmp = (string)($file['tmp_name'] ?? '');
230 if ($tmp === '' || !is_uploaded_file($tmp)) {
231 json_exit('文件上传异常');
232 }
233 $dir = ROOT . 'imsetes/upload_logo/';
234 if (!is_dir($dir) && !@mkdir($dir, 0755, true)) {
235 json_exit('上传目录不可写');
236 }
237 $filename = 'home_' . $key . '.png';
238 if (!move_uploaded_file($tmp, $dir . $filename)) {
239 json_exit('保存文件失败,请检查 imsetes/upload_logo 目录权限');
240 }
241 json_exit('上传成功');
242 return;
243}
244if($egn == 'settheme')
245{
246 $usertheme = mnbt_theme_sanitize($_POST['usertheme'] ?? '');
247 $admintheme = mnbt_theme_sanitize($_POST['admintheme'] ?? '');
248 $dockertheme = mnbt_theme_sanitize($_POST['dockertheme'] ?? '');
249 $hometheme = mnbt_theme_sanitize($_POST['hometheme'] ?? '');
250 if ($usertheme === '' || $admintheme === '') {
251 json_exit('请选择用户端和管理端主题');
252 }
253 list($okUser, $msgUser) = mnbt_theme_set_active('user', $usertheme);
254 if (!$okUser) {
255 json_exit($msgUser);
256 }
257 list($okAdmin, $msgAdmin) = mnbt_theme_set_active('admin', $admintheme);
258 if (!$okAdmin) {
259 json_exit($msgAdmin);
260 }
261 if ($dockertheme !== '') {
262 list($okDocker, $msgDocker) = mnbt_theme_set_active('docker', $dockertheme);
263 if (!$okDocker) {
264 json_exit($msgDocker);
265 }
266 }
267 if ($hometheme !== '') {
268 list($okHome, $msgHome) = mnbt_theme_set_active('home', $hometheme);
269 if (!$okHome) {
270 json_exit($msgHome);
271 }
272 }
273 logjl($user, '主题设置', '用户端=' . $usertheme . ' 管理端=' . $admintheme . ' Docker端=' . ($dockertheme ?: '默认') . ' 主页=' . ($hometheme ?: '默认'), '修改成功', $DB);
274 json_exit('修改成功');
275 return;
276}
277
278return;