155 lines
7.4 KiB
PHP
155 lines
7.4 KiB
PHP
<?php
|
||
require_once __DIR__ . '/layout.php';
|
||
|
||
function getLocalSetting($key, $default = null) {
|
||
try {
|
||
$stmt = db()->prepare("SELECT setting_value FROM system_settings WHERE setting_key = ?");
|
||
$stmt->execute([$key]);
|
||
$val = $stmt->fetchColumn();
|
||
return $val !== false ? $val : $default;
|
||
} catch (Exception $e) {
|
||
return $default;
|
||
}
|
||
}
|
||
|
||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||
$settings = [
|
||
'email_verification_enabled' => $_POST['email_verification_enabled'] ?? '0',
|
||
'site_logo' => $_POST['site_logo'] ?? '',
|
||
'usdt_trc20_address' => $_POST['usdt_trc20_address'] ?? '',
|
||
'usdt_erc20_address' => $_POST['usdt_erc20_address'] ?? '',
|
||
'usdt_bep20_address' => $_POST['usdt_bep20_address'] ?? '',
|
||
'service_link' => $_POST['service_link'] ?? '',
|
||
'site_name' => $_POST['site_name'] ?? 'Byro',
|
||
];
|
||
|
||
foreach ($settings as $key => $val) {
|
||
$stmt = db()->prepare("INSERT INTO system_settings (setting_key, setting_value) VALUES (?, ?) ON DUPLICATE KEY UPDATE setting_value = ?");
|
||
$stmt->execute([$key, $val, $val]);
|
||
}
|
||
|
||
// Handle logo upload if provided
|
||
if (isset($_FILES['logo_file']) && $_FILES['logo_file']['error'] === 0) {
|
||
$ext = pathinfo($_FILES['logo_file']['name'], PATHINFO_EXTENSION);
|
||
$filename = 'logo_' . time() . '.' . $ext;
|
||
$target = __DIR__ . '/../assets/images/' . $filename;
|
||
if (!is_dir(__DIR__ . '/../assets/images/')) {
|
||
mkdir(__DIR__ . '/../assets/images/', 0777, true);
|
||
}
|
||
if (move_uploaded_file($_FILES['logo_file']['tmp_name'], $target)) {
|
||
$logo_path = '/assets/images/' . $filename;
|
||
$stmt = db()->prepare("INSERT INTO system_settings (setting_key, setting_value) VALUES ('site_logo', ?) ON DUPLICATE KEY UPDATE setting_value = ?");
|
||
$stmt->execute([$logo_path, $logo_path]);
|
||
}
|
||
}
|
||
|
||
$success = true;
|
||
}
|
||
|
||
$email_verify = getLocalSetting('email_verification_enabled', '0');
|
||
$site_logo = getLocalSetting('site_logo', '');
|
||
$trc20_addr = getLocalSetting('usdt_trc20_address', '');
|
||
$erc20_addr = getLocalSetting('usdt_erc20_address', '');
|
||
$bep20_addr = getLocalSetting('usdt_bep20_address', '');
|
||
$service_link = getLocalSetting('service_link', '');
|
||
$site_name = getLocalSetting('site_name', 'Byro');
|
||
|
||
$title = '后台设置';
|
||
ob_start();
|
||
?>
|
||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||
<div class="d-flex align-items-center gap-3">
|
||
<a href="index.php" class="btn btn-outline-secondary btn-sm"><i class="bi bi-arrow-left"></i> 返回</a>
|
||
<h4 class="mb-0">系统设置</h4>
|
||
</div>
|
||
</div>
|
||
<div class="row">
|
||
<div class="col-md-8">
|
||
<div class="table-container">
|
||
<h5 class="fw-bold mb-4">系统全局配置</h5>
|
||
|
||
<?php if (isset($success)): ?>
|
||
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
||
设置已成功保存!
|
||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||
</div>
|
||
<?php endif; ?>
|
||
|
||
<form method="POST" enctype="multipart/form-data">
|
||
<div class="mb-4">
|
||
<label class="form-label fw-bold">网站名称</label>
|
||
<input type="text" name="site_name" class="form-control" value="<?= htmlspecialchars($site_name) ?>">
|
||
</div>
|
||
|
||
<div class="mb-4">
|
||
<label class="form-label fw-bold">前端 LOGO / 网站图标</label>
|
||
<div class="d-flex align-items-center gap-3 mb-2">
|
||
<?php if ($site_logo): ?>
|
||
<div class="bg-dark p-2 rounded">
|
||
<img src="<?= $site_logo ?>" height="40" class="d-block">
|
||
</div>
|
||
<?php endif; ?>
|
||
<input type="file" name="logo_file" class="form-control">
|
||
</div>
|
||
<div class="form-text">上传后将同步更新网站 LOGO 和 Favicon 浏览器图标。建议使用透明 PNG。</div>
|
||
</div>
|
||
|
||
<hr class="my-4">
|
||
<h6 class="fw-bold mb-3 text-primary"><i class="bi bi-wallet2 me-2"></i>充值地址配置</h6>
|
||
|
||
<div class="mb-3">
|
||
<label class="form-label fw-bold">USDT (TRC20) 地址</label>
|
||
<input type="text" name="usdt_trc20_address" class="form-control" value="<?= htmlspecialchars($trc20_addr) ?>" placeholder="请输入 TRC20 钱包地址">
|
||
</div>
|
||
|
||
<div class="mb-3">
|
||
<label class="form-label fw-bold">USDT (ERC20) 地址</label>
|
||
<input type="text" name="usdt_erc20_address" class="form-control" value="<?= htmlspecialchars($erc20_addr) ?>" placeholder="请输入 ERC20 钱包地址">
|
||
</div>
|
||
|
||
<div class="mb-3">
|
||
<label class="form-label fw-bold">USDT (BEP20) 地址</label>
|
||
<input type="text" name="usdt_bep20_address" class="form-control" value="<?= htmlspecialchars($bep20_addr) ?>" placeholder="请输入 BEP20 钱包地址">
|
||
</div>
|
||
|
||
<hr class="my-4">
|
||
<h6 class="fw-bold mb-3 text-primary"><i class="bi bi-shield-check me-2"></i>安全与功能</h6>
|
||
|
||
<div class="mb-4">
|
||
<div class="form-check form-switch">
|
||
<input class="form-check-input" type="checkbox" name="email_verification_enabled" value="1" id="emailSwitch" <?= $email_verify == '1' ? 'checked' : '' ?>>
|
||
<label class="form-check-label fw-bold" for="emailSwitch">注册时开启邮箱/手机验证码</label>
|
||
</div>
|
||
<div class="form-text">开启后,用户注册必须输入验证码(演示环境默认验证码:123456)。</div>
|
||
</div>
|
||
|
||
<div class="mb-4">
|
||
<label class="form-label fw-bold">在线客服链接</label>
|
||
<input type="text" name="service_link" class="form-control" value="<?= htmlspecialchars($service_link) ?>" placeholder="https://...">
|
||
</div>
|
||
|
||
<hr class="my-4">
|
||
|
||
<button type="submit" class="btn btn-primary px-5 btn-lg">
|
||
<i class="bi bi-check-lg me-1"></i> 提交保存
|
||
</button>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
<div class="col-md-4">
|
||
<div class="card p-4 border-0 shadow-sm card-dismissible" data-card-id="settings_instructions">
|
||
<h6 class="fw-bold mb-3">使用说明</h6>
|
||
<ul class="small text-muted ps-3 mb-0">
|
||
<li class="mb-2"><strong>网站名称:</strong>影响浏览器标签页标题。</li>
|
||
<li class="mb-2"><strong>LOGO:</strong>上传后会自动替换后台左上角及前端所有引用处。</li>
|
||
<li class="mb-2"><strong>充值地址:</strong>对应前端充值页面的三个网络,请务必填写正确。</li>
|
||
<li class="mb-2"><strong>验证码:</strong>若未配置 SMTP 邮件服务,建议保持关闭或使用固定验证码。</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<?php
|
||
$content = ob_get_clean();
|
||
renderAdminPage($content, $title);
|
||
?>
|