38451-vm/admin/backend_settings.php
2026-02-18 07:46:54 +00:00

155 lines
7.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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);
?>