prepare("SELECT setting_value FROM system_settings WHERE setting_key = ?"); $stmt->execute([$key]); $row = $stmt->fetch(); return $row ? $row['setting_value'] : $default; } } $email_verify_enabled = getSetting('email_verification_enabled', '0') === '1'; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $reg_type = $_POST['reg_type'] ?? 'username'; // 'email' or 'username' $account = $_POST['account'] ?? ''; $password = $_POST['password'] ?? ''; $confirm_password = $_POST['confirm_password'] ?? ''; $verify_code = $_POST['verify_code'] ?? ''; $agree_all = isset($_POST['agree_all']); if (empty($account) || empty($password)) { $error = __('fill_full_info'); } elseif ($password !== $confirm_password) { $error = __('pwd_mismatch'); } elseif ($email_verify_enabled && empty($verify_code)) { $error = __('enter_verify_code'); } elseif (!$agree_all) { $error = __('agree_terms_error'); } else { if ($email_verify_enabled && $verify_code !== '123456') { // Check session for actual code if not demo if (!isset($_SESSION['email_code']) || $verify_code !== $_SESSION['email_code']) { $error = __('verify_code_error'); } } if (!$error) { try { $hash = password_hash($password, PASSWORD_DEFAULT); $uid = str_pad(mt_rand(0, 99999999), 8, '0', STR_PAD_LEFT); $username = $account; $email = ''; if ($reg_type === 'email') { $email = $account; $username = explode('@', $account)[0] . mt_rand(100, 999); } else { $email = $username . '@user.byro'; // Fallback } $ip = $_SERVER['REMOTE_ADDR'] ?? ''; $stmt = db()->prepare("INSERT INTO users (username, email, password_hash, uid, credit_score, total_recharge, role, registration_ip) VALUES (?, ?, ?, ?, ?, 0, 'user', ?)"); $stmt->execute([$username, $email, $hash, $uid, 80, $ip]); $userId = db()->lastInsertId(); if (session_status() === PHP_SESSION_NONE) session_start(); $_SESSION['user_id'] = $userId; $_SESSION['username'] = $username; $_SESSION['uid'] = $uid; $_SESSION['role'] = 'user'; // Initialize balance $stmt = db()->prepare("INSERT INTO user_balances (user_id, symbol, available) VALUES (?, 'USDT', 0)"); $stmt->execute([$userId]); header('Location: /'); exit; } catch (PDOException $e) { $error = __('account_exists'); } } } } // Add API for sending email if (isset($_GET['action']) && $_GET['action'] === 'send_code') { header('Content-Type: application/json'); $email = $_GET['email'] ?? ''; if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { echo json_encode(['success' => false, 'error' => __('invalid_email')]); exit; } $code = str_pad(mt_rand(0, 999999), 6, '0', STR_PAD_LEFT); if (session_status() === PHP_SESSION_NONE) session_start(); $_SESSION['email_code'] = $code; require_once __DIR__ . '/../mail/MailService.php'; $subject = __('verification_code') . ' - ' . __('register'); $content = __('verification_code') . ": $code"; $res = MailService::sendMail($email, $subject, $content, $content); echo json_encode(['success' => true]); exit; } include __DIR__ . '/../includes/header.php'; ?>
<?= $site_name ?>