Autosave: 20260216-024959
This commit is contained in:
parent
1663ac0240
commit
3d64b056c5
39
about.php
Normal file
39
about.php
Normal file
@ -0,0 +1,39 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/includes/lang.php';
|
||||
require_once __DIR__ . '/includes/header.php';
|
||||
?>
|
||||
<main class="container py-5">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-8">
|
||||
<h1 class="mb-4 fw-bold"><?php echo __('about_us'); ?></h1>
|
||||
<div class="card bg-dark border-secondary p-4">
|
||||
<p class="lead mb-4"><?php echo __('about_content'); ?></p>
|
||||
<h3 class="mt-4 mb-3">Our Mission</h3>
|
||||
<p class="text-muted">
|
||||
To make digital asset trading accessible, secure, and intuitive for everyone, everywhere.
|
||||
We believe in the power of blockchain to transform the global financial landscape.
|
||||
</p>
|
||||
<h3 class="mt-4 mb-3">Global Presence</h3>
|
||||
<p class="text-muted">
|
||||
With offices in Singapore, London, and Tokyo, Byro serves a diverse global community.
|
||||
We are compliant with international standards and prioritize the security of our users' assets.
|
||||
</p>
|
||||
<div class="row mt-5 text-center">
|
||||
<div class="col-4">
|
||||
<h2 class="fw-bold text-primary">5M+</h2>
|
||||
<p class="small text-muted">Users</p>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<h2 class="fw-bold text-primary">100+</h2>
|
||||
<p class="small text-muted">Countries</p>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<h2 class="fw-bold text-primary">$10B+</h2>
|
||||
<p class="small text-muted">Daily Volume</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php require_once __DIR__ . '/includes/footer.php'; ?>
|
||||
56
admin/settings.php
Normal file
56
admin/settings.php
Normal file
@ -0,0 +1,56 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../includes/lang.php';
|
||||
require_once __DIR__ . '/../db/config.php';
|
||||
|
||||
// Simple admin check (in real app, use roles)
|
||||
if (!isset($_SESSION['user_id'])) {
|
||||
header('Location: /auth/login.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
$message = '';
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
$email_verify = isset($_POST['email_verification_enabled']) ? '1' : '0';
|
||||
$stmt = db()->prepare("UPDATE system_settings SET setting_value = ? WHERE setting_key = 'email_verification_enabled'");
|
||||
$stmt->execute([$email_verify]);
|
||||
$message = 'Settings updated successfully';
|
||||
}
|
||||
|
||||
$email_verify_enabled = getSetting('email_verification_enabled', '0') === '1';
|
||||
|
||||
function getSetting($key, $default = null) {
|
||||
$stmt = db()->prepare("SELECT setting_value FROM system_settings WHERE setting_key = ?");
|
||||
$stmt->execute([$key]);
|
||||
$row = $stmt->fetch();
|
||||
return $row ? $row['setting_value'] : $default;
|
||||
}
|
||||
|
||||
include __DIR__ . '/../includes/header.php';
|
||||
?>
|
||||
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<h1>Admin Settings</h1>
|
||||
<?php if ($message): ?>
|
||||
<div style="background: var(--success); color: #fff; padding: 12px; border-radius: 4px; margin-bottom: 20px;">
|
||||
<?= $message ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div style="background: var(--surface); padding: 40px; border-radius: 8px; border: 1px solid var(--border);">
|
||||
<form method="POST">
|
||||
<div style="display: flex; align-items: center; gap: 12px; margin-bottom: 24px;">
|
||||
<input type="checkbox" name="email_verification_enabled" id="email_verify" <?= $email_verify_enabled ? 'checked' : '' ?> style="width: 20px; height: 20px;">
|
||||
<label for="email_verify">Enable Email Verification for Registration</label>
|
||||
</div>
|
||||
<p style="color: var(--text-muted); font-size: 14px; margin-bottom: 24px;">
|
||||
If enabled, users will see an "Email Verification Code" field during registration.
|
||||
(Demo code is 123456)
|
||||
</p>
|
||||
<button type="submit" class="btn btn-primary">Save Settings</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php include __DIR__ . '/../includes/footer.php'; ?>
|
||||
60
api.php
Normal file
60
api.php
Normal file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/includes/lang.php';
|
||||
require_once __DIR__ . '/includes/header.php';
|
||||
?>
|
||||
<main class="container py-5">
|
||||
<h1 class="mb-4 fw-bold"><?php echo __('api_doc'); ?></h1>
|
||||
<div class="card bg-dark border-secondary p-4">
|
||||
<div class="row">
|
||||
<div class="col-md-3 border-end border-secondary">
|
||||
<nav class="nav flex-column sticky-top" style="top: 100px;">
|
||||
<a class="nav-link text-white fw-bold mb-2" href="#intro">Introduction</a>
|
||||
<a class="nav-link text-muted mb-2" href="#auth">Authentication</a>
|
||||
<a class="nav-link text-muted mb-2" href="#market">Market Data</a>
|
||||
<a class="nav-link text-muted mb-2" href="#trade">Trade Endpoints</a>
|
||||
<a class="nav-link text-muted mb-2" href="#errors">Errors</a>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="col-md-9 ps-md-4">
|
||||
<section id="intro" class="mb-5">
|
||||
<h2 class="fw-bold">Introduction</h2>
|
||||
<p class="text-muted">Welcome to the Byro API. Our API allows you to access market data, manage your account, and execute trades programmatically. We use a RESTful architecture with JSON responses.</p>
|
||||
</section>
|
||||
|
||||
<section id="auth" class="mb-5">
|
||||
<h2 class="fw-bold">Authentication</h2>
|
||||
<p class="text-muted">All private endpoints require API Key authentication. You can generate API keys in your account profile settings.</p>
|
||||
<div class="bg-black p-3 rounded mb-3">
|
||||
<code class="text-success">Authorization: Bearer YOUR_API_KEY</code>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="market" class="mb-5">
|
||||
<h2 class="fw-bold">Market Data</h2>
|
||||
<h5 class="mt-4">Get Ticker</h5>
|
||||
<div class="bg-black p-3 rounded mb-2">
|
||||
<code>GET /api/v1/market/ticker?symbol=BTCUSDT</code>
|
||||
</div>
|
||||
<p class="small text-muted">Returns the latest price and 24h volume for the specified symbol.</p>
|
||||
</section>
|
||||
|
||||
<section id="trade" class="mb-5">
|
||||
<h2 class="fw-bold">Trade</h2>
|
||||
<h5 class="mt-4">Place Order</h5>
|
||||
<div class="bg-black p-3 rounded mb-2">
|
||||
<code class="text-info">POST /api/v1/trade/order</code>
|
||||
</div>
|
||||
<p class="small text-muted">Payload example:</p>
|
||||
<pre class="bg-black p-3 rounded text-warning"><code>{
|
||||
"symbol": "BTCUSDT",
|
||||
"side": "buy",
|
||||
"type": "limit",
|
||||
"price": "65000",
|
||||
"amount": "0.1"
|
||||
}</code></pre>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php require_once __DIR__ . '/includes/footer.php'; ?>
|
||||
40
api/pexels.php
Normal file
40
api/pexels.php
Normal file
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
header('Content-Type: application/json');
|
||||
require_once __DIR__.'/../includes/pexels.php';
|
||||
|
||||
$action = $_GET['action'] ?? 'multiple';
|
||||
|
||||
if ($action === 'multiple') {
|
||||
$qs = isset($_GET['queries']) ? explode(',', $_GET['queries']) : ['trading chart', 'bitcoin tech', 'ethereum crypto'];
|
||||
$out = [];
|
||||
foreach ($qs as $q) {
|
||||
$u = 'https://api.pexels.com/v1/search?query=' . urlencode(trim($q)) . '&orientation=landscape&per_page=1&page=1';
|
||||
$d = pexels_get($u);
|
||||
if ($d && !empty($d['photos'])) {
|
||||
$p = $d['photos'][0];
|
||||
$src = $p['src']['large2x'] ?? $p['src']['original'];
|
||||
$filename = $p['id'] . '.jpg';
|
||||
$dest = __DIR__ . '/../assets/images/pexels/' . $filename;
|
||||
|
||||
if (!file_exists($dest)) {
|
||||
download_to($src, $dest);
|
||||
}
|
||||
|
||||
$out[] = [
|
||||
'src' => 'assets/images/pexels/' . $filename,
|
||||
'photographer' => $p['photographer'] ?? 'Unknown',
|
||||
'photographer_url' => $p['photographer_url'] ?? '',
|
||||
'title' => trim($q)
|
||||
];
|
||||
} else {
|
||||
// Fallback
|
||||
$out[] = [
|
||||
'src' => 'https://picsum.photos/1200/400?random=' . rand(1, 100),
|
||||
'photographer' => 'Random',
|
||||
'photographer_url' => '#',
|
||||
'title' => trim($q)
|
||||
];
|
||||
}
|
||||
}
|
||||
echo json_encode($out);
|
||||
}
|
||||
55
api/wallet.php
Normal file
55
api/wallet.php
Normal file
@ -0,0 +1,55 @@
|
||||
<?php
|
||||
header('Content-Type: application/json');
|
||||
require_once __DIR__ . '/../db/config.php';
|
||||
|
||||
$action = $_GET['action'] ?? '';
|
||||
session_start();
|
||||
$userId = $_SESSION['user_id'] ?? null;
|
||||
|
||||
if (!$userId) {
|
||||
echo json_encode(['success' => false, 'error' => 'Unauthorized']);
|
||||
exit;
|
||||
}
|
||||
|
||||
try {
|
||||
$db = db();
|
||||
|
||||
if ($action === 'get_balance') {
|
||||
$stmt = $db->prepare("SELECT * FROM user_balances WHERE user_id = ?");
|
||||
$stmt->execute([$userId]);
|
||||
$balances = $stmt->fetchAll();
|
||||
echo json_encode(['success' => true, 'balances' => $balances]);
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($action === 'deposit') {
|
||||
$amount = (float)($_POST['amount'] ?? 0);
|
||||
$symbol = $_POST['symbol'] ?? 'USDT';
|
||||
|
||||
if ($amount <= 0) throw new Exception("Invalid amount");
|
||||
|
||||
$db->beginTransaction();
|
||||
|
||||
// Update balance
|
||||
$stmt = $db->prepare("INSERT INTO user_balances (user_id, symbol, available)
|
||||
VALUES (?, ?, ?)
|
||||
ON DUPLICATE KEY UPDATE available = available + ?");
|
||||
$stmt->execute([$userId, $symbol, $amount, $amount]);
|
||||
|
||||
// Log transaction
|
||||
$stmt = $db->prepare("INSERT INTO transactions (user_id, type, amount, symbol, status)
|
||||
VALUES (?, 'deposit', ?, ?, 'completed')");
|
||||
$stmt->execute([$userId, $amount, $symbol]);
|
||||
|
||||
$db->commit();
|
||||
|
||||
echo json_encode(['success' => true, 'message' => 'Deposit successful']);
|
||||
exit;
|
||||
}
|
||||
|
||||
throw new Exception("Invalid action");
|
||||
|
||||
} catch (Exception $e) {
|
||||
if (isset($db) && $db->inTransaction()) $db->rollBack();
|
||||
echo json_encode(['success' => false, 'error' => $e->getMessage()]);
|
||||
}
|
||||
53
app.php
Normal file
53
app.php
Normal file
@ -0,0 +1,53 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/includes/lang.php';
|
||||
require_once __DIR__ . '/includes/header.php';
|
||||
?>
|
||||
<main class="container py-5 text-center">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-lg-6 text-start">
|
||||
<h1 class="display-4 fw-bold mb-4"><?php echo __('app_download'); ?></h1>
|
||||
<p class="lead text-muted mb-5"><?php echo __('app_desc'); ?></p>
|
||||
|
||||
<div class="d-flex flex-wrap gap-3 mb-5">
|
||||
<a href="#" class="btn btn-dark btn-lg border-secondary px-4 py-2 d-flex align-items-center text-start">
|
||||
<i class="bi bi-apple fs-1 me-3"></i>
|
||||
<div>
|
||||
<div class="small text-muted">Download on the</div>
|
||||
<div class="fw-bold">App Store</div>
|
||||
</div>
|
||||
</a>
|
||||
<a href="#" class="btn btn-dark btn-lg border-secondary px-4 py-2 d-flex align-items-center text-start">
|
||||
<i class="bi bi-google-play fs-1 me-3 text-primary"></i>
|
||||
<div>
|
||||
<div class="small text-muted">GET IT ON</div>
|
||||
<div class="fw-bold">Google Play</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="row g-4">
|
||||
<div class="col-6">
|
||||
<div class="p-3 border border-secondary rounded-3 text-center">
|
||||
<img src="https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=https://byro.example.com" alt="QR Code" class="img-fluid rounded mb-2">
|
||||
<p class="small text-muted mb-0">Scan to Download</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<ul class="list-unstyled small text-muted text-start mt-2">
|
||||
<li><i class="bi bi-check2 text-primary me-2"></i> Real-time alerts</li>
|
||||
<li><i class="bi bi-check2 text-primary me-2"></i> Full trading features</li>
|
||||
<li><i class="bi bi-check2 text-primary me-2"></i> 2FA security</li>
|
||||
<li><i class="bi bi-check2 text-primary me-2"></i> 24/7 Live chat</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6 d-none d-lg-block">
|
||||
<div class="position-relative">
|
||||
<div class="bg-primary rounded-circle position-absolute blur-30" style="width: 400px; height: 400px; opacity: 0.1; top: 0; right: 0;"></div>
|
||||
<i class="bi bi-phone text-primary" style="font-size: 400px; line-height: 1;"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php require_once __DIR__ . '/includes/footer.php'; ?>
|
||||
112
assets/css/index.css
Normal file
112
assets/css/index.css
Normal file
@ -0,0 +1,112 @@
|
||||
:root {
|
||||
--primary-color: #0062ff;
|
||||
--bg-dark: #0b0e11;
|
||||
--card-bg: #1e2329;
|
||||
--text-main: #eaecef;
|
||||
--text-muted: #848e9c;
|
||||
--border-color: #2b3139;
|
||||
--success: #26a69a;
|
||||
--danger: #ef5350;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: var(--bg-dark);
|
||||
color: var(--text-main);
|
||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
/* Ensure readability on dark backgrounds */
|
||||
.text-muted {
|
||||
color: var(--text-muted) !important;
|
||||
}
|
||||
|
||||
.card {
|
||||
background-color: var(--card-bg);
|
||||
border: 1px solid var(--border-color);
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
/* Hero Carousel Optimization */
|
||||
.carousel-item {
|
||||
transition: transform 0.6s ease-in-out;
|
||||
}
|
||||
.carousel-content {
|
||||
border-radius: 16px;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
background-size: cover !important;
|
||||
background-position: center !important;
|
||||
}
|
||||
.carousel-overlay {
|
||||
position: absolute;
|
||||
top: 0; left: 0; right: 0; bottom: 0;
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
z-index: 1;
|
||||
}
|
||||
.carousel-content > div {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
/* Coin Cards */
|
||||
.coin-card {
|
||||
border: 1px solid var(--border-color);
|
||||
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
}
|
||||
.coin-card:hover {
|
||||
transform: translateY(-8px);
|
||||
border-color: var(--primary-color);
|
||||
box-shadow: 0 10px 20px rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
.price-up { color: var(--success) !important; }
|
||||
.price-down { color: var(--danger) !important; }
|
||||
|
||||
/* Icons */
|
||||
.icon-box {
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 16px;
|
||||
margin-bottom: 1.5rem;
|
||||
transition: transform 0.3s;
|
||||
}
|
||||
.icon-box:hover {
|
||||
transform: scale(1.1);
|
||||
}
|
||||
|
||||
/* Partner Cards */
|
||||
.partner-card {
|
||||
background: var(--card-bg);
|
||||
border: 1px solid var(--border-color);
|
||||
transition: all 0.3s;
|
||||
height: 100px;
|
||||
filter: grayscale(0.5);
|
||||
opacity: 0.8;
|
||||
}
|
||||
.partner-card:hover {
|
||||
filter: grayscale(0);
|
||||
opacity: 1;
|
||||
border-color: var(--text-muted);
|
||||
}
|
||||
|
||||
/* Footer status */
|
||||
.status-indicator {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
background: #00ff00;
|
||||
border-radius: 50%;
|
||||
display: inline-block;
|
||||
margin-right: 8px;
|
||||
box-shadow: 0 0 8px #00ff00;
|
||||
animation: pulse 2s infinite;
|
||||
}
|
||||
|
||||
@keyframes pulse {
|
||||
0% { transform: scale(0.95); opacity: 0.7; }
|
||||
70% { transform: scale(1.2); opacity: 1; }
|
||||
100% { transform: scale(0.95); opacity: 0.7; }
|
||||
}
|
||||
76
assets/css/style.css
Normal file
76
assets/css/style.css
Normal file
@ -0,0 +1,76 @@
|
||||
:root {
|
||||
--primary: #0062ff;
|
||||
--bg: #0b0e11;
|
||||
--surface: #1e2329;
|
||||
--text: #eaecef;
|
||||
--text-muted: #9ba3af; /* Improved contrast from #888888 */
|
||||
--border: #2b3139;
|
||||
--success: #26a69a;
|
||||
--danger: #ef5350;
|
||||
}
|
||||
|
||||
|
||||
body {
|
||||
background-color: var(--bg);
|
||||
color: var(--text);
|
||||
font-family: 'Inter', system-ui, -apple-system, sans-serif;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--primary);
|
||||
text-decoration: none;
|
||||
transition: opacity 0.2s;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
display: inline-block;
|
||||
padding: 10px 24px;
|
||||
border-radius: 4px;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
border: none;
|
||||
text-align: center;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-color: var(--primary);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.btn-outline {
|
||||
background-color: transparent;
|
||||
border: 1px solid var(--border);
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.section {
|
||||
padding: 80px 0;
|
||||
}
|
||||
|
||||
/* Auth related */
|
||||
.auth-container {
|
||||
max-width: 440px;
|
||||
margin: 80px auto;
|
||||
padding: 40px;
|
||||
background: var(--surface);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 8px;
|
||||
}
|
||||
313
assets/css/terminal.css
Normal file
313
assets/css/terminal.css
Normal file
@ -0,0 +1,313 @@
|
||||
:root {
|
||||
--term-bg: #0b0e11;
|
||||
--term-surface: #161a1e;
|
||||
--term-border: #2b3139;
|
||||
--term-text: #eaecef;
|
||||
--term-muted: #848e9c;
|
||||
--term-primary: #0062ff;
|
||||
--term-success: #26a69a;
|
||||
--term-danger: #ef5350;
|
||||
--header-height: 50px;
|
||||
--sidebar-width: 260px;
|
||||
--orderbook-width: 280px;
|
||||
}
|
||||
|
||||
.terminal-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: calc(100vh - 70px);
|
||||
background: var(--term-bg);
|
||||
color: var(--term-text);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.terminal-top-nav {
|
||||
height: var(--header-height);
|
||||
background: var(--term-surface);
|
||||
border-bottom: 1px solid var(--term-border);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.terminal-tab {
|
||||
padding: 0 24px;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
color: var(--term-muted);
|
||||
text-decoration: none !important;
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
border-right: 1px solid var(--term-border);
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.terminal-tab:hover {
|
||||
color: var(--term-text);
|
||||
background: rgba(255,255,255,0.05);
|
||||
}
|
||||
|
||||
.terminal-tab.active {
|
||||
background: var(--term-bg);
|
||||
color: var(--term-primary);
|
||||
border-bottom: 2px solid var(--term-primary);
|
||||
}
|
||||
|
||||
.terminal-main {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.terminal-sidebar {
|
||||
width: var(--sidebar-width);
|
||||
border-right: 1px solid var(--term-border);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background: var(--term-surface);
|
||||
}
|
||||
|
||||
.sidebar-search {
|
||||
padding: 12px;
|
||||
border-bottom: 1px solid var(--term-border);
|
||||
}
|
||||
|
||||
.sidebar-search input {
|
||||
background: #2b3139;
|
||||
border: none;
|
||||
color: #fff;
|
||||
width: 100%;
|
||||
padding: 8px 12px;
|
||||
border-radius: 4px;
|
||||
font-size: 13px;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.coin-list-container {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.coin-row {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 10px 12px;
|
||||
cursor: pointer;
|
||||
border-bottom: 1px solid rgba(255,255,255,0.02);
|
||||
transition: background 0.2s;
|
||||
}
|
||||
|
||||
.coin-row:hover {
|
||||
background: rgba(255,255,255,0.05);
|
||||
}
|
||||
|
||||
.coin-row .coin-info {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.coin-row img {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.coin-row .symbol {
|
||||
font-weight: 600;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.coin-row .price {
|
||||
font-size: 13px;
|
||||
text-align: right;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
.coin-row .change {
|
||||
font-size: 11px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.terminal-content {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
background: var(--term-bg);
|
||||
}
|
||||
|
||||
.content-header {
|
||||
height: 60px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0 16px;
|
||||
border-bottom: 1px solid var(--term-border);
|
||||
gap: 24px;
|
||||
}
|
||||
|
||||
.header-pair {
|
||||
font-size: 20px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.header-stat {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.header-stat label {
|
||||
font-size: 11px;
|
||||
color: var(--term-muted);
|
||||
}
|
||||
|
||||
.header-stat span {
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.kline-container {
|
||||
flex: 2;
|
||||
background: #000;
|
||||
position: relative;
|
||||
border-bottom: 1px solid var(--term-border);
|
||||
}
|
||||
|
||||
.trading-panels {
|
||||
height: 280px;
|
||||
display: flex;
|
||||
border-bottom: 1px solid var(--term-border);
|
||||
}
|
||||
|
||||
.order-form-container {
|
||||
flex: 1;
|
||||
padding: 16px;
|
||||
border-right: 1px solid var(--term-border);
|
||||
}
|
||||
|
||||
.order-form-tabs {
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.order-form-tabs button {
|
||||
background: none;
|
||||
border: none;
|
||||
color: var(--term-muted);
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
|
||||
.order-form-tabs button.active {
|
||||
color: var(--term-text);
|
||||
border-bottom: 2px solid var(--term-primary);
|
||||
}
|
||||
|
||||
.input-group-custom {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.input-group-custom label {
|
||||
display: block;
|
||||
font-size: 11px;
|
||||
color: var(--term-muted);
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.input-wrapper {
|
||||
background: #2b3139;
|
||||
border-radius: 4px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.input-wrapper input {
|
||||
background: transparent;
|
||||
border: none;
|
||||
color: #fff;
|
||||
width: 100%;
|
||||
padding: 8px 0;
|
||||
outline: none;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.input-wrapper .suffix {
|
||||
font-size: 12px;
|
||||
color: var(--term-muted);
|
||||
}
|
||||
|
||||
.order-history {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.terminal-right-sidebar {
|
||||
width: var(--orderbook-width);
|
||||
border-left: 1px solid var(--term-border);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background: var(--term-surface);
|
||||
}
|
||||
|
||||
.order-book {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.ob-header {
|
||||
padding: 8px 12px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
color: var(--term-muted);
|
||||
border-bottom: 1px solid var(--term-border);
|
||||
}
|
||||
|
||||
.ob-list {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.ob-row {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 2px 12px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.ob-row .price { width: 40%; }
|
||||
.ob-row .amount { width: 30%; text-align: right; }
|
||||
.ob-row .total { width: 30%; text-align: right; }
|
||||
|
||||
.asks .price { color: var(--term-danger); }
|
||||
.bids .price { color: var(--term-success); }
|
||||
|
||||
.ob-row-bg {
|
||||
position: absolute;
|
||||
top: 0; right: 0; bottom: 0;
|
||||
z-index: -1;
|
||||
opacity: 0.15;
|
||||
}
|
||||
|
||||
.asks .ob-row-bg { background: var(--term-danger); }
|
||||
.bids .ob-row-bg { background: var(--term-success); }
|
||||
|
||||
.ob-mid-price {
|
||||
padding: 10px 12px;
|
||||
background: rgba(255,255,255,0.02);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
border-top: 1px solid var(--term-border);
|
||||
border-bottom: 1px solid var(--term-border);
|
||||
}
|
||||
|
||||
.ob-mid-price .val { font-size: 18px; font-weight: 700; }
|
||||
|
||||
.btn-buy { background: var(--term-success); border: none; color: #fff; width: 100%; padding: 10px; border-radius: 4px; font-weight: 700; margin-top: 10px; }
|
||||
.btn-sell { background: var(--term-danger); border: none; color: #fff; width: 100%; padding: 10px; border-radius: 4px; font-weight: 700; margin-top: 10px; }
|
||||
BIN
assets/pasted-20260216-012801-565c8750.png
Normal file
BIN
assets/pasted-20260216-012801-565c8750.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 33 KiB |
BIN
assets/pasted-20260216-022249-e3af8e8e.png
Normal file
BIN
assets/pasted-20260216-022249-e3af8e8e.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
59
auth/login.php
Normal file
59
auth/login.php
Normal file
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../includes/lang.php';
|
||||
require_once __DIR__ . '/../db/config.php';
|
||||
|
||||
$error = '';
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
$account = $_POST['account'] ?? '';
|
||||
$password = $_POST['password'] ?? '';
|
||||
|
||||
if (empty($account) || empty($password)) {
|
||||
$error = 'Please fill in all fields';
|
||||
} else {
|
||||
$stmt = db()->prepare("SELECT * FROM users WHERE username = ? OR email = ?");
|
||||
$stmt->execute([$account, $account]);
|
||||
$user = $stmt->fetch();
|
||||
|
||||
if ($user && password_verify($password, $user['password_hash'])) {
|
||||
$_SESSION['user_id'] = $user['id'];
|
||||
header('Location: /');
|
||||
exit;
|
||||
} else {
|
||||
$error = 'Invalid account or password';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
include __DIR__ . '/../includes/header.php';
|
||||
?>
|
||||
|
||||
<div style="max-width: 400px; margin: 100px auto; padding: 40px; background: var(--surface); border-radius: 8px; border: 1px solid var(--border);">
|
||||
<h2 style="margin-bottom: 24px; text-align: center;"><?= __('login') ?></h2>
|
||||
|
||||
<?php if ($error): ?>
|
||||
<div style="background: rgba(239, 83, 80, 0.1); color: var(--danger); padding: 12px; border-radius: 4px; margin-bottom: 20px; font-size: 14px;">
|
||||
<?= $error ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<form method="POST">
|
||||
<div style="margin-bottom: 20px;">
|
||||
<label style="display: block; margin-bottom: 8px; font-size: 14px; color: var(--text-muted);">Account / Email</label>
|
||||
<input type="text" name="account" style="width: 100%; padding: 12px; background: var(--bg); border: 1px solid var(--border); border-radius: 4px; color: #fff; box-sizing: border-box;" required>
|
||||
</div>
|
||||
|
||||
<div style="margin-bottom: 24px;">
|
||||
<label style="display: block; margin-bottom: 8px; font-size: 14px; color: var(--text-muted);"><?= __('password') ?></label>
|
||||
<input type="password" name="password" style="width: 100%; padding: 12px; background: var(--bg); border: 1px solid var(--border); border-radius: 4px; color: #fff; box-sizing: border-box;" required>
|
||||
</div>
|
||||
|
||||
<button type="submit" style="width: 100%; padding: 14px; background: var(--primary); border: none; border-radius: 4px; color: #fff; font-weight: bold; cursor: pointer;"><?= __('login') ?></button>
|
||||
</form>
|
||||
|
||||
<div style="margin-top: 24px; text-align: center; font-size: 14px; color: var(--text-muted);">
|
||||
New to OKX? <a href="/auth/register.php" style="color: var(--primary); text-decoration: none;">Create an account</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php include __DIR__ . '/../includes/footer.php'; ?>
|
||||
5
auth/logout.php
Normal file
5
auth/logout.php
Normal file
@ -0,0 +1,5 @@
|
||||
<?php
|
||||
session_start();
|
||||
session_destroy();
|
||||
header('Location: /');
|
||||
exit;
|
||||
130
auth/register.php
Normal file
130
auth/register.php
Normal file
@ -0,0 +1,130 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../includes/lang.php';
|
||||
require_once __DIR__ . '/../db/config.php';
|
||||
|
||||
$error = '';
|
||||
$email_verify_enabled = getSetting('email_verification_enabled', '0') === '1';
|
||||
|
||||
function getSetting($key, $default = null) {
|
||||
$stmt = db()->prepare("SELECT setting_value FROM system_settings WHERE setting_key = ?");
|
||||
$stmt->execute([$key]);
|
||||
$row = $stmt->fetch();
|
||||
return $row ? $row['setting_value'] : $default;
|
||||
}
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
$account = $_POST['account'] ?? '';
|
||||
$password = $_POST['password'] ?? '';
|
||||
$confirm_password = $_POST['confirm_password'] ?? '';
|
||||
$verify_code = $_POST['verify_code'] ?? '';
|
||||
$agree = isset($_POST['agree']);
|
||||
|
||||
if (empty($account) || empty($password)) {
|
||||
$error = 'Please fill in all fields';
|
||||
} elseif ($password !== $confirm_password) {
|
||||
$error = 'Passwords do not match';
|
||||
} elseif ($email_verify_enabled && empty($verify_code)) {
|
||||
$error = 'Email verification code is required';
|
||||
} elseif (!$agree) {
|
||||
$error = 'You must agree to the Terms and Privacy Policy';
|
||||
} else {
|
||||
if ($email_verify_enabled && $verify_code !== '123456') {
|
||||
$error = 'Invalid verification code (use 123456 for demo)';
|
||||
} else {
|
||||
try {
|
||||
$hash = password_hash($password, PASSWORD_DEFAULT);
|
||||
$stmt = db()->prepare("INSERT INTO users (username, email, password_hash) VALUES (?, ?, ?)");
|
||||
|
||||
$username = strpos($account, '@') === false ? $account : explode('@', $account)[0];
|
||||
$email = strpos($account, '@') !== false ? $account : $account . '@byro.io';
|
||||
|
||||
$stmt->execute([$username, $email, $hash]);
|
||||
$userId = db()->lastInsertId();
|
||||
|
||||
// Initialize balance
|
||||
$stmt = db()->prepare("INSERT INTO user_balances (user_id, symbol, available) VALUES (?, 'USDT', 0)");
|
||||
$stmt->execute([$userId]);
|
||||
|
||||
$_SESSION['user_id'] = $userId;
|
||||
header('Location: /');
|
||||
exit;
|
||||
} catch (PDOException $e) {
|
||||
$error = 'Account already exists or database error';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
include __DIR__ . '/../includes/header.php';
|
||||
?>
|
||||
|
||||
<div class="container py-5">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-5">
|
||||
<div class="card bg-dark border-secondary p-4 p-md-5 shadow-lg">
|
||||
<div class="text-center mb-4">
|
||||
<div class="logo-container d-inline-flex mb-3">
|
||||
<div class="logo-icon">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12 2L2 7L12 12L22 7L12 2Z" fill="white"/>
|
||||
<path d="M2 17L12 22L22 17" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M2 12L12 17L22 12" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
</div>
|
||||
<span class="logo-text fs-2">Byro</span>
|
||||
</div>
|
||||
<h2 class="fw-bold"><?= __('register') ?></h2>
|
||||
<p class="text-muted small">Create your account to start trading</p>
|
||||
</div>
|
||||
|
||||
<?php if ($error): ?>
|
||||
<div class="alert alert-danger py-2 small border-0 bg-danger bg-opacity-10 text-danger">
|
||||
<i class="bi bi-exclamation-triangle me-2"></i><?= $error ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<form method="POST">
|
||||
<div class="mb-3">
|
||||
<label class="form-label text-muted small"><?= __('register') ?> (Account/Email)</label>
|
||||
<input type="text" name="account" class="form-control bg-black border-secondary text-white py-2" required>
|
||||
</div>
|
||||
|
||||
<?php if ($email_verify_enabled): ?>
|
||||
<div class="mb-3">
|
||||
<label class="form-label text-muted small"><?= __('email_verify') ?></label>
|
||||
<div class="input-group">
|
||||
<input type="text" name="verify_code" class="form-control bg-black border-secondary text-white">
|
||||
<button class="btn btn-outline-secondary btn-sm" type="button"><?= __('send_code') ?? 'Send Code' ?></button>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label text-muted small"><?= __('password') ?></label>
|
||||
<input type="password" name="password" class="form-control bg-black border-secondary text-white py-2" required>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label text-muted small"><?= __('confirm_password') ?></label>
|
||||
<input type="password" name="confirm_password" class="form-control bg-black border-secondary text-white py-2" required>
|
||||
</div>
|
||||
|
||||
<div class="mb-4 form-check small">
|
||||
<input type="checkbox" name="agree" class="form-check-input bg-black border-secondary" id="agreeCheck" required>
|
||||
<label class="form-check-label text-muted" for="agreeCheck">
|
||||
<?= __('agree_terms') ?>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary w-100 py-2 fw-bold mb-3"><?= __('register') ?></button>
|
||||
|
||||
<div class="text-center small text-muted">
|
||||
Already have an account? <a href="/auth/login.php" class="text-primary text-decoration-none"><?= __('login') ?></a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php include __DIR__ . '/../includes/footer.php'; ?>
|
||||
9
binary.php
Normal file
9
binary.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/includes/lang.php';
|
||||
require_once __DIR__ . '/includes/header.php';
|
||||
require_once __DIR__ . '/includes/terminal_layout.php';
|
||||
|
||||
renderTerminal('binary');
|
||||
|
||||
require_once __DIR__ . '/includes/footer.php';
|
||||
?>
|
||||
9
contract.php
Normal file
9
contract.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/includes/lang.php';
|
||||
require_once __DIR__ . '/includes/header.php';
|
||||
require_once __DIR__ . '/includes/terminal_layout.php';
|
||||
|
||||
renderTerminal('contract');
|
||||
|
||||
require_once __DIR__ . '/includes/footer.php';
|
||||
?>
|
||||
21
db/migrations/001_init_exchange.sql
Normal file
21
db/migrations/001_init_exchange.sql
Normal file
@ -0,0 +1,21 @@
|
||||
CREATE TABLE IF NOT EXISTS user_balances (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
symbol VARCHAR(10) NOT NULL,
|
||||
available DECIMAL(20, 8) DEFAULT 0,
|
||||
frozen DECIMAL(20, 8) DEFAULT 0,
|
||||
UNIQUE KEY (user_id, symbol)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS transactions (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT NOT NULL,
|
||||
type VARCHAR(20) NOT NULL,
|
||||
amount DECIMAL(20, 8) NOT NULL,
|
||||
symbol VARCHAR(10) NOT NULL,
|
||||
status VARCHAR(20) DEFAULT 'completed',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- Insert a default user balance for testing (assuming user_id 1)
|
||||
INSERT IGNORE INTO user_balances (user_id, symbol, available) VALUES (1, 'USDT', 0.00);
|
||||
14
db/migrations/002_add_users_and_settings.sql
Normal file
14
db/migrations/002_add_users_and_settings.sql
Normal file
@ -0,0 +1,14 @@
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
username VARCHAR(50) UNIQUE,
|
||||
email VARCHAR(100) UNIQUE,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS system_settings (
|
||||
setting_key VARCHAR(50) PRIMARY KEY,
|
||||
setting_value TEXT
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
INSERT IGNORE INTO system_settings (setting_key, setting_value) VALUES ('email_verification_enabled', '0');
|
||||
76
fees.php
Normal file
76
fees.php
Normal file
@ -0,0 +1,76 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/includes/lang.php';
|
||||
require_once __DIR__ . '/includes/header.php';
|
||||
?>
|
||||
<main class="container py-5">
|
||||
<h1 class="mb-4 fw-bold"><?php echo __('fee_structure'); ?></h1>
|
||||
<div class="card bg-dark border-secondary p-4 mb-5">
|
||||
<p class="text-muted"><?php echo __('fees_content'); ?></p>
|
||||
|
||||
<h3 class="mt-4 mb-4">Spot Trading Fees</h3>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-dark table-hover border-secondary">
|
||||
<thead>
|
||||
<tr class="text-muted">
|
||||
<th>Tier</th>
|
||||
<th>30d Trading Volume</th>
|
||||
<th>Maker Fee</th>
|
||||
<th>Taker Fee</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>VIP 0 (Regular)</td>
|
||||
<td>< $10,000</td>
|
||||
<td>0.100%</td>
|
||||
<td>0.100%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>VIP 1</td>
|
||||
<td>≥ $10,000</td>
|
||||
<td>0.080%</td>
|
||||
<td>0.090%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>VIP 2</td>
|
||||
<td>≥ $100,000</td>
|
||||
<td>0.060%</td>
|
||||
<td>0.080%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>VIP 3</td>
|
||||
<td>≥ $500,000</td>
|
||||
<td>0.040%</td>
|
||||
<td>0.070%</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<h3 class="mt-5 mb-4">Contract Trading Fees</h3>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-dark table-hover border-secondary">
|
||||
<thead>
|
||||
<tr class="text-muted">
|
||||
<th>Tier</th>
|
||||
<th>Maker Fee</th>
|
||||
<th>Taker Fee</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Regular</td>
|
||||
<td>0.020%</td>
|
||||
<td>0.050%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>VIP 1</td>
|
||||
<td>0.015%</td>
|
||||
<td>0.045%</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php require_once __DIR__ . '/includes/footer.php'; ?>
|
||||
73
help.php
Normal file
73
help.php
Normal file
@ -0,0 +1,73 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/includes/lang.php';
|
||||
require_once __DIR__ . '/includes/header.php';
|
||||
?>
|
||||
<main class="container py-5">
|
||||
<div class="text-center mb-5">
|
||||
<h1 class="display-5 fw-bold mb-3"><?php echo __('help'); ?></h1>
|
||||
<p class="text-muted">Search for articles or browse categories below.</p>
|
||||
<div class="input-group mb-3 mx-auto" style="max-width: 600px;">
|
||||
<input type="text" class="form-control form-control-lg bg-dark text-white border-secondary" placeholder="How can we help you?">
|
||||
<button class="btn btn-primary px-4"><i class="bi bi-search"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row g-4">
|
||||
<div class="col-md-4">
|
||||
<div class="card bg-dark border-secondary h-100 p-4 text-center hover-up">
|
||||
<i class="bi bi-person-plus fs-1 text-primary mb-3"></i>
|
||||
<h4 class="fw-bold">Getting Started</h4>
|
||||
<p class="text-muted small">Learn how to create an account, verify your identity, and secure your funds.</p>
|
||||
<a href="#" class="stretched-link"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card bg-dark border-secondary h-100 p-4 text-center hover-up">
|
||||
<i class="bi bi-wallet2 fs-1 text-success mb-3"></i>
|
||||
<h4 class="fw-bold">Deposits & Withdrawals</h4>
|
||||
<p class="text-muted small">Everything you need to know about moving assets in and out of Byro.</p>
|
||||
<a href="#" class="stretched-link"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card bg-dark border-secondary h-100 p-4 text-center hover-up">
|
||||
<i class="bi bi-graph-up-arrow fs-1 text-info mb-3"></i>
|
||||
<h4 class="fw-bold">Trading Tutorials</h4>
|
||||
<p class="text-muted small">Master spot, contract, and binary options trading with our guides.</p>
|
||||
<a href="#" class="stretched-link"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card bg-dark border-secondary h-100 p-4 text-center hover-up">
|
||||
<i class="bi bi-shield-lock fs-1 text-warning mb-3"></i>
|
||||
<h4 class="fw-bold">Security & Account</h4>
|
||||
<p class="text-muted small">Troubleshoot login issues, 2FA, and manage your account settings.</p>
|
||||
<a href="#" class="stretched-link"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card bg-dark border-secondary h-100 p-4 text-center hover-up">
|
||||
<i class="bi bi-cpu fs-1 text-danger mb-3"></i>
|
||||
<h4 class="fw-bold">API Documentation</h4>
|
||||
<p class="text-muted small">Integrate Byro trading features into your own applications.</p>
|
||||
<a href="/api.php" class="stretched-link"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card bg-dark border-secondary h-100 p-4 text-center hover-up">
|
||||
<i class="bi bi-chat-dots fs-1 text-light mb-3"></i>
|
||||
<h4 class="fw-bold">Contact Support</h4>
|
||||
<p class="text-muted small">Can't find what you're looking for? Reach out to our 24/7 team.</p>
|
||||
<a href="/support.php" class="stretched-link"></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<style>
|
||||
.hover-up:hover {
|
||||
transform: translateY(-10px);
|
||||
border-color: var(--primary) !important;
|
||||
transition: all 0.3s;
|
||||
}
|
||||
</style>
|
||||
<?php require_once __DIR__ . '/includes/footer.php'; ?>
|
||||
81
includes/footer.php
Normal file
81
includes/footer.php
Normal file
@ -0,0 +1,81 @@
|
||||
<footer class="mt-5 py-5 border-top border-secondary bg-darker">
|
||||
<div class="container">
|
||||
<div class="row g-4 mb-5">
|
||||
<div class="col-lg-4 col-md-12">
|
||||
<div class="logo-container mb-3">
|
||||
<div class="logo-icon">
|
||||
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12 2L2 7L12 12L22 7L12 2Z" fill="white"/>
|
||||
<path d="M2 17L12 22L22 17" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M2 12L12 17L22 12" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
</div>
|
||||
<span class="logo-text">Byro</span>
|
||||
</div>
|
||||
<p class="text-muted small mb-4">
|
||||
Byro is the world's most trusted digital asset exchange for individuals and institutions.
|
||||
Trade, store, and earn cryptocurrency with confidence.
|
||||
</p>
|
||||
<div class="social-links d-flex gap-3 fs-5 text-muted">
|
||||
<a href="#" class="text-reset"><i class="bi bi-twitter-x"></i></a>
|
||||
<a href="#" class="text-reset"><i class="bi bi-telegram"></i></a>
|
||||
<a href="#" class="text-reset"><i class="bi bi-discord"></i></a>
|
||||
<a href="#" class="text-reset"><i class="bi bi-facebook"></i></a>
|
||||
<a href="#" class="text-reset"><i class="bi bi-instagram"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-2 col-md-4">
|
||||
<h6 class="fw-bold mb-3"><?php echo __('footer_about'); ?></h6>
|
||||
<ul class="list-unstyled small lh-lg">
|
||||
<li><a href="/about.php" class="text-muted text-decoration-none"><?php echo __('about_us'); ?></a></li>
|
||||
<li><a href="/news.php" class="text-muted text-decoration-none"><?php echo __('news'); ?></a></li>
|
||||
<li><a href="/tos.php" class="text-muted text-decoration-none"><?php echo __('terms'); ?></a></li>
|
||||
<li><a href="/help.php" class="text-muted text-decoration-none"><?php echo __('help'); ?></a></li>
|
||||
<li><a href="/legal.php" class="text-muted text-decoration-none"><?php echo __('privacy'); ?></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-lg-2 col-md-4">
|
||||
<h6 class="fw-bold mb-3"><?php echo __('footer_product'); ?></h6>
|
||||
<ul class="list-unstyled small lh-lg">
|
||||
<li><a href="/binary.php" class="text-muted text-decoration-none"><?php echo __('second_contract'); ?></a></li>
|
||||
<li><a href="/trade.php" class="text-muted text-decoration-none"><?php echo __('spot'); ?></a></li>
|
||||
<li><a href="/contract.php" class="text-muted text-decoration-none"><?php echo __('contract'); ?></a></li>
|
||||
<li><a href="/swap.php" class="text-muted text-decoration-none"><?php echo __('swap'); ?></a></li>
|
||||
<li><a href="/mining.php" class="text-muted text-decoration-none"><?php echo __('mining'); ?></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-lg-2 col-md-4">
|
||||
<h6 class="fw-bold mb-3"><?php echo __('footer_support'); ?></h6>
|
||||
<ul class="list-unstyled small lh-lg">
|
||||
<li><a href="/support.php" class="text-muted text-decoration-none"><?php echo __('submit_request'); ?></a></li>
|
||||
<li><a href="/api.php" class="text-muted text-decoration-none"><?php echo __('api_doc'); ?></a></li>
|
||||
<li><a href="/fees.php" class="text-muted text-decoration-none"><?php echo __('fee_structure'); ?></a></li>
|
||||
<li><a href="/app.php" class="text-muted text-decoration-none"><?php echo __('app_download'); ?></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="border-top border-secondary pt-4 d-flex flex-column flex-md-row justify-content-between align-items-center gap-3">
|
||||
<div class="small text-muted">
|
||||
<?php echo __('copyright'); ?>
|
||||
</div>
|
||||
<div class="d-flex gap-4 small text-muted">
|
||||
<span class="d-flex align-items-center gap-2 text-success">
|
||||
<span class="status-indicator"></span>
|
||||
<?php echo __('status_normal'); ?>
|
||||
</span>
|
||||
<a href="/cookie-policy.php" class="text-reset text-decoration-none"><?php echo __('cookie_policy'); ?></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<style>
|
||||
.bg-darker {
|
||||
background-color: #080808;
|
||||
}
|
||||
footer a:hover {
|
||||
color: var(--primary) !important;
|
||||
}
|
||||
</style>
|
||||
</body>
|
||||
</html>
|
||||
228
includes/header.php
Normal file
228
includes/header.php
Normal file
@ -0,0 +1,228 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../db/config.php';
|
||||
require_once __DIR__ . '/lang.php';
|
||||
|
||||
$user = null;
|
||||
if (isset($_SESSION['user_id'])) {
|
||||
$stmt = db()->prepare("SELECT * FROM users WHERE id = ?");
|
||||
$stmt->execute([$_SESSION['user_id']]);
|
||||
$user = $stmt->fetch();
|
||||
}
|
||||
|
||||
function getSetting($key, $default = null) {
|
||||
$stmt = db()->prepare("SELECT setting_value FROM system_settings WHERE setting_key = ?");
|
||||
$stmt->execute([$key]);
|
||||
$row = $stmt->fetch();
|
||||
return $row ? $row['setting_value'] : $default;
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="<?= $lang ?>">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Byro | Professional Digital Asset Exchange</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.1/font/bootstrap-icons.css">
|
||||
<link rel="stylesheet" href="/assets/css/style.css?v=<?= time() ?>">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
|
||||
<style>
|
||||
:root {
|
||||
--primary: #0062ff;
|
||||
--bg: #0b0e11;
|
||||
--surface: #1e2329;
|
||||
--text: #eaecef;
|
||||
--text-muted: #9ba3af;
|
||||
--border: #2b3139;
|
||||
--success: #26a69a;
|
||||
--danger: #ef5350;
|
||||
}
|
||||
body {
|
||||
background-color: var(--bg);
|
||||
color: var(--text);
|
||||
font-family: 'Inter', system-ui, -apple-system, sans-serif;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
header {
|
||||
height: 70px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0 24px;
|
||||
border-bottom: 1px solid var(--border);
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: rgba(0,0,0,0.9);
|
||||
backdrop-filter: blur(10px);
|
||||
z-index: 1000;
|
||||
}
|
||||
.logo-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
text-decoration: none;
|
||||
margin-right: 40px;
|
||||
}
|
||||
.logo-icon {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
background: var(--primary);
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.logo-text {
|
||||
font-size: 24px;
|
||||
font-weight: 800;
|
||||
color: #fff;
|
||||
letter-spacing: -0.5px;
|
||||
}
|
||||
nav {
|
||||
display: flex;
|
||||
gap: 24px;
|
||||
flex: 1;
|
||||
}
|
||||
nav a {
|
||||
color: var(--text);
|
||||
text-decoration: none;
|
||||
font-size: 15px;
|
||||
font-weight: 500;
|
||||
transition: color 0.2s;
|
||||
}
|
||||
nav a:hover {
|
||||
color: var(--primary);
|
||||
}
|
||||
.header-right {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 20px;
|
||||
}
|
||||
.lang-switcher {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
padding: 8px 12px;
|
||||
border-radius: 8px;
|
||||
border: 1px solid var(--border);
|
||||
background: rgba(255,255,255,0.05);
|
||||
transition: all 0.2s;
|
||||
}
|
||||
.lang-switcher:hover {
|
||||
background: rgba(255,255,255,0.1);
|
||||
border-color: var(--primary);
|
||||
}
|
||||
.flag-icon {
|
||||
width: 20px;
|
||||
height: 15px;
|
||||
object-fit: cover;
|
||||
border-radius: 2px;
|
||||
}
|
||||
.lang-dropdown {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: calc(100% + 10px);
|
||||
right: 0;
|
||||
background: #121212;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 12px;
|
||||
padding: 8px;
|
||||
min-width: 160px;
|
||||
box-shadow: 0 10px 30px rgba(0,0,0,0.8);
|
||||
z-index: 1100;
|
||||
}
|
||||
.lang-switcher:hover .lang-dropdown {
|
||||
display: block;
|
||||
}
|
||||
.lang-dropdown a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 12px 16px;
|
||||
color: var(--text);
|
||||
text-decoration: none;
|
||||
font-size: 14px;
|
||||
border-radius: 8px;
|
||||
transition: background 0.2s;
|
||||
}
|
||||
.lang-dropdown a:hover {
|
||||
background: var(--primary);
|
||||
color: #fff;
|
||||
}
|
||||
.auth-btns a {
|
||||
font-size: 14px;
|
||||
text-decoration: none;
|
||||
color: var(--text);
|
||||
padding: 10px 20px;
|
||||
border-radius: 6px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.btn-login:hover {
|
||||
background: #222;
|
||||
}
|
||||
.btn-register {
|
||||
background: var(--primary);
|
||||
color: #fff !important;
|
||||
}
|
||||
.btn-register:hover {
|
||||
background: #0056e0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<a href="/" class="logo-container">
|
||||
<div class="logo-icon">
|
||||
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12 2L2 7L12 12L22 7L12 2Z" fill="white"/>
|
||||
<path d="M12 22L2 17L12 12L22 17L12 22Z" fill="rgba(255,255,255,0.3)"/>
|
||||
<path d="M2 12L12 17L22 12" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
</div>
|
||||
<span class="logo-text" style="letter-spacing: 1px;">BYRO</span>
|
||||
</a>
|
||||
<nav>
|
||||
<a href="/"><?= __('home') ?></a>
|
||||
<a href="/market.php"><?= __('market') ?></a>
|
||||
<a href="/binary.php"><?= __('second_contract') ?></a>
|
||||
<a href="/trade.php"><?= __('spot') ?></a>
|
||||
<a href="/contract.php"><?= __('contract') ?></a>
|
||||
<a href="/mining.php"><?= __('mining') ?></a>
|
||||
<a href="/swap.php"><?= __('swap') ?></a>
|
||||
</nav>
|
||||
<div class="header-right">
|
||||
<div class="lang-switcher">
|
||||
<?php if ($lang === 'zh'): ?>
|
||||
<img src="https://flagcdn.com/w40/cn.png" class="flag-icon" alt="CN">
|
||||
<span>中文</span>
|
||||
<?php else: ?>
|
||||
<img src="https://flagcdn.com/w40/us.png" class="flag-icon" alt="US">
|
||||
<span>English</span>
|
||||
<?php endif; ?>
|
||||
<div class="lang-dropdown">
|
||||
<a href="?lang=zh">
|
||||
<img src="https://flagcdn.com/w40/cn.png" class="flag-icon" alt="CN">
|
||||
简体中文
|
||||
</a>
|
||||
<a href="?lang=en">
|
||||
<img src="https://flagcdn.com/w40/us.png" class="flag-icon" alt="US">
|
||||
English
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<?php if ($user): ?>
|
||||
<div class="user-center">
|
||||
<a href="/profile.php" class="btn btn-outline-light btn-sm me-2"><i class="bi bi-person-circle me-1"></i> <?= __('personal') ?></a>
|
||||
<a href="/auth/logout.php" class="btn btn-link btn-sm text-muted text-decoration-none"><?= __('logout') ?></a>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div class="auth-btns">
|
||||
<a href="/auth/login.php" class="btn-login"><?= __('login') ?></a>
|
||||
<a href="/auth/register.php" class="btn-register"><?= __('register') ?></a>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</header>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
||||
158
includes/lang.php
Normal file
158
includes/lang.php
Normal file
@ -0,0 +1,158 @@
|
||||
<?php
|
||||
session_start();
|
||||
|
||||
$lang = $_SESSION['lang'] ?? 'zh';
|
||||
if (isset($_GET['lang'])) {
|
||||
$lang = $_GET['lang'] === 'en' ? 'en' : 'zh';
|
||||
$_SESSION['lang'] = $lang;
|
||||
}
|
||||
|
||||
$translations = [
|
||||
'zh' => [
|
||||
'home' => '首页',
|
||||
'market' => '行情',
|
||||
'second_contract' => '秒合约',
|
||||
'spot' => '现货交易',
|
||||
'contract' => '合约交易',
|
||||
'mining' => '挖矿',
|
||||
'swap' => '闪兑',
|
||||
'personal' => '个人中心',
|
||||
'login' => '登入',
|
||||
'register' => '注册',
|
||||
'logout' => '退出',
|
||||
'language' => '语言选择',
|
||||
'footer_about' => '关于',
|
||||
'footer_product' => '产品',
|
||||
'footer_support' => '支持',
|
||||
'about_us' => '关于我们',
|
||||
'news' => '新闻中心',
|
||||
'terms' => '服务条款',
|
||||
'help' => '帮助中心',
|
||||
'privacy' => '法律与隐私',
|
||||
'submit_request' => '提交请求',
|
||||
'api_doc' => 'API文档',
|
||||
'fee_structure' => '费率标准',
|
||||
'app_download' => 'APP下载',
|
||||
'system_status' => '系统状态',
|
||||
'normal' => '正常',
|
||||
'cookie_policy' => 'Cookie 政策',
|
||||
'platform_advantage' => '为什么选择 Byro',
|
||||
'partners' => '合作伙伴',
|
||||
'deposit' => '充值',
|
||||
'withdraw' => '提现',
|
||||
'assets' => '资产',
|
||||
'email_verify' => '邮箱验证码',
|
||||
'password' => '密码',
|
||||
'confirm_password' => '确认密码',
|
||||
'agree_terms' => '我已阅读并同意服务条款和隐私政策',
|
||||
'send_code' => '发送验证码',
|
||||
'view_more' => '查看更多',
|
||||
'hero_title' => '全球领先的数字资产交易平台',
|
||||
'hero_subtitle' => '在 Byro 开启您的加密货币之旅,安全、稳定、可靠。',
|
||||
'get_started' => '立即开始',
|
||||
'popular_markets' => '热门市场',
|
||||
'coin' => '币种',
|
||||
'last_price' => '最新价',
|
||||
'change_24h' => '24h 涨跌',
|
||||
'trade' => '交易',
|
||||
'why_choose_us' => '为什么选择我们',
|
||||
'security_title' => '顶尖风控',
|
||||
'security_desc' => '多重签名冷钱包存储,确保资产绝对安全。',
|
||||
'liquidity_title' => '极速成交',
|
||||
'liquidity_desc' => '毫秒级撮合系统,高达 10w TPS 处理能力。',
|
||||
'support_title' => '24/7 全球支持',
|
||||
'support_desc' => '专业团队即时响应,为您解决任何交易问题。',
|
||||
'diversity_title' => '丰富产品线',
|
||||
'diversity_desc' => '涵盖现货、合约、杠杆等多元化金融产品。',
|
||||
'copyright' => '© 2023-2026 Byro. 版权所有。',
|
||||
'status_normal' => '系统状态:正常',
|
||||
'advantage_1_title' => '安全合规',
|
||||
'advantage_1_desc' => '全球合规运营,采用冷热钱包分离技术,确保您的资产安全。',
|
||||
'advantage_2_title' => '流动性强',
|
||||
'advantage_2_desc' => '毫秒级撮合引擎,深度流动性,为您提供极致的交易体验。',
|
||||
'advantage_3_title' => '7/24 支持',
|
||||
'advantage_3_desc' => '全天候多语言在线客服,随时解答您的任何疑问。',
|
||||
'advantage_4_title' => '多样化产品',
|
||||
'advantage_4_desc' => '涵盖现货、合约、秒合约、挖矿等多种投资工具。',
|
||||
'about_content' => 'Byro 是一家全球领先的数字货币交易平台,成立于 2023 年,致力于为全球用户提供安全、专业、透明的数字资产金融服务。我们拥有顶尖的技术团队和风控体系,为超过 100 个国家和地区的数百万用户提供服务。',
|
||||
'news_content' => 'Byro 每日更新全球加密市场动态,包括最新的上币信息、行业动态、深度分析报告,助您掌握财富密码。',
|
||||
'fees_content' => 'Byro 致力于提供行业极具竞争力的费率标准。现货交易手续费低至 0.1%,根据您的交易量等级,还可以享受更大幅度的费率折扣。',
|
||||
'app_desc' => '随时随地,尽在掌握。下载 Byro 移动端,体验专业级交易。',
|
||||
],
|
||||
'en' => [
|
||||
'home' => 'Home',
|
||||
'market' => 'Market',
|
||||
'second_contract' => 'Binary',
|
||||
'spot' => 'Spot',
|
||||
'contract' => 'Contract',
|
||||
'mining' => 'Mining',
|
||||
'swap' => 'Swap',
|
||||
'personal' => 'Account',
|
||||
'login' => 'Login',
|
||||
'register' => 'Register',
|
||||
'logout' => 'Logout',
|
||||
'language' => 'Language',
|
||||
'footer_about' => 'About',
|
||||
'footer_product' => 'Products',
|
||||
'footer_support' => 'Support',
|
||||
'about_us' => 'About Us',
|
||||
'news' => 'News',
|
||||
'terms' => 'Terms of Service',
|
||||
'help' => 'Help Center',
|
||||
'privacy' => 'Privacy Policy',
|
||||
'submit_request' => 'Submit Request',
|
||||
'api_doc' => 'API Docs',
|
||||
'fee_structure' => 'Fees',
|
||||
'app_download' => 'Download App',
|
||||
'system_status' => 'System Status',
|
||||
'normal' => 'Normal',
|
||||
'cookie_policy' => 'Cookie Policy',
|
||||
'platform_advantage' => 'Why Choose Byro',
|
||||
'partners' => 'Partners',
|
||||
'deposit' => 'Deposit',
|
||||
'withdraw' => 'Withdraw',
|
||||
'assets' => 'Assets',
|
||||
'email_verify' => 'Email Code',
|
||||
'password' => 'Password',
|
||||
'confirm_password' => 'Confirm Password',
|
||||
'agree_terms' => 'I have read and agree to the Terms of Service and Privacy Policy',
|
||||
'send_code' => 'Send Code',
|
||||
'view_more' => 'View More',
|
||||
'hero_title' => 'The World\'s Leading Digital Asset Exchange',
|
||||
'hero_subtitle' => 'Start your cryptocurrency journey on Byro, secure, stable, and reliable.',
|
||||
'get_started' => 'Get Started',
|
||||
'popular_markets' => 'Popular Markets',
|
||||
'coin' => 'Coin',
|
||||
'last_price' => 'Last Price',
|
||||
'change_24h' => '24h Change',
|
||||
'trade' => 'Trade',
|
||||
'why_choose_us' => 'Why Choose Us',
|
||||
'security_title' => 'Advanced Security',
|
||||
'security_desc' => 'Multi-sig cold storage for ultimate asset safety.',
|
||||
'liquidity_title' => 'High Performance',
|
||||
'liquidity_desc' => 'Millisecond matching with up to 100k TPS.',
|
||||
'support_title' => '24/7 Global Support',
|
||||
'support_desc' => 'Professional response for any trading issues.',
|
||||
'diversity_title' => 'Diverse Products',
|
||||
'diversity_desc' => 'Spot, Futures, and more financial instruments.',
|
||||
'copyright' => '© 2023-2026 Byro. All rights reserved.',
|
||||
'status_normal' => 'System Status: Normal',
|
||||
'advantage_1_title' => 'Security & Compliance',
|
||||
'advantage_1_desc' => 'Global compliant operations with cold/hot wallet isolation to ensure asset security.',
|
||||
'advantage_2_title' => 'Strong Liquidity',
|
||||
'advantage_2_desc' => 'Millisecond matching engine with deep liquidity for an ultimate trading experience.',
|
||||
'advantage_3_title' => '7/24 Support',
|
||||
'advantage_3_desc' => 'All-day multi-language online customer service to answer your questions anytime.',
|
||||
'advantage_4_title' => 'Diverse Products',
|
||||
'advantage_4_desc' => 'Covering spot, contract, binary, mining and various investment tools.',
|
||||
'about_content' => 'Byro is a world-leading digital currency exchange established in 2023, committed to providing secure, professional, and transparent digital asset financial services to users globally. We have a top-tier technical team and risk control system, serving millions of users across more than 100 countries and regions.',
|
||||
'news_content' => 'Byro updates daily global crypto market dynamics, including the latest listing info, industry trends, and in-depth analysis reports to help you master wealth opportunities.',
|
||||
'fees_content' => 'Byro is committed to providing industry-competitive fee standards. Spot trading fees as low as 0.1%, with deeper discounts based on your trading volume tier.',
|
||||
'app_desc' => 'Anytime, anywhere, at your fingertips. Download Byro mobile app for professional trading experience.',
|
||||
]
|
||||
];
|
||||
|
||||
function __($key) {
|
||||
global $translations, $lang;
|
||||
return $translations[$lang][$key] ?? $key;
|
||||
}
|
||||
25
includes/pexels.php
Normal file
25
includes/pexels.php
Normal file
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
function pexels_key() {
|
||||
$k = getenv('PEXELS_KEY');
|
||||
return $k && strlen($k) > 0 ? $k : 'Vc99rnmOhHhJAbgGQoKLZtsaIVfkeownoQNbTj78VemUjKh08ZYRbf18';
|
||||
}
|
||||
function pexels_get($url) {
|
||||
$ch = curl_init();
|
||||
curl_setopt_array($ch, [
|
||||
CURLOPT_URL => $url,
|
||||
CURLOPT_RETURNTRANSFER => true,
|
||||
CURLOPT_HTTPHEADER => [ 'Authorization: '. pexels_key() ],
|
||||
CURLOPT_TIMEOUT => 15,
|
||||
]);
|
||||
$resp = curl_exec($ch);
|
||||
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
curl_close($ch);
|
||||
if ($code >= 200 && $code < 300 && $resp) return json_decode($resp, true);
|
||||
return null;
|
||||
}
|
||||
function download_to($srcUrl, $destPath) {
|
||||
$data = @file_get_contents($srcUrl);
|
||||
if ($data === false) return false;
|
||||
if (!is_dir(dirname($destPath))) mkdir(dirname($destPath), 0775, true);
|
||||
return file_put_contents($destPath, $data) !== false;
|
||||
}
|
||||
185
includes/terminal_layout.php
Normal file
185
includes/terminal_layout.php
Normal file
@ -0,0 +1,185 @@
|
||||
<?php
|
||||
function renderTerminal($activeTab = 'spot') {
|
||||
global $lang;
|
||||
$coins = [
|
||||
['symbol' => 'BTC', 'name' => 'Bitcoin', 'id' => '1/small/bitcoin.png', 'price' => '64,234.50', 'change' => '+2.45%'],
|
||||
['symbol' => 'ETH', 'name' => 'Ethereum', 'id' => '279/small/ethereum.png', 'price' => '3,456.20', 'change' => '+1.12%'],
|
||||
['symbol' => 'BNB', 'name' => 'BNB', 'id' => '825/small/binance-coin-logo.png', 'price' => '598.40', 'change' => '-0.56%'],
|
||||
['symbol' => 'SOL', 'name' => 'Solana', 'id' => '4128/small/solana.png', 'price' => '145.20', 'change' => '+5.67%'],
|
||||
['symbol' => 'XRP', 'name' => 'Ripple', 'id' => '44/small/xrp-symbol-white-128.png', 'price' => '0.62', 'change' => '-1.23%'],
|
||||
['symbol' => 'ADA', 'name' => 'Cardano', 'id' => '975/small/cardano.png', 'price' => '0.58', 'change' => '+0.89%'],
|
||||
['symbol' => 'DOGE', 'name' => 'Dogecoin', 'id' => '5/small/dogecoin.png', 'price' => '0.16', 'change' => '+12.4%'],
|
||||
['symbol' => 'DOT', 'name' => 'Polkadot', 'id' => '12171/small/polkadot.png', 'price' => '8.45', 'change' => '-2.11%'],
|
||||
['symbol' => 'MATIC', 'name' => 'Polygon', 'id' => '4713/small/matic-network.png', 'price' => '0.92', 'change' => '+1.56%'],
|
||||
['symbol' => 'LINK', 'name' => 'Chainlink', 'id' => '877/small/chainlink.png', 'price' => '18.40', 'change' => '+3.22%'],
|
||||
];
|
||||
?>
|
||||
<link rel="stylesheet" href="/assets/css/terminal.css?v=<?= time() ?>">
|
||||
<div class="terminal-container">
|
||||
<!-- Top Nav Tabs -->
|
||||
<div class="terminal-top-nav">
|
||||
<a href="/binary.php" class="terminal-tab <?= $activeTab === 'binary' ? 'active' : '' ?>"><?= __('second_contract') ?></a>
|
||||
<a href="/trade.php" class="terminal-tab <?= $activeTab === 'spot' ? 'active' : '' ?>"><?= __('spot') ?></a>
|
||||
<a href="/contract.php" class="terminal-tab <?= $activeTab === 'contract' ? 'active' : '' ?>"><?= __('contract') ?></a>
|
||||
</div>
|
||||
|
||||
<div class="terminal-main">
|
||||
<!-- Left Sidebar -->
|
||||
<div class="terminal-sidebar">
|
||||
<div class="sidebar-search">
|
||||
<input type="text" placeholder="<?= __('coin') ?> / USDT">
|
||||
</div>
|
||||
<div class="coin-list-container">
|
||||
<?php foreach ($coins as $c): ?>
|
||||
<div class="coin-row">
|
||||
<div class="coin-info">
|
||||
<img src="https://assets.coingecko.com/coins/images/<?= $c['id'] ?>" alt="<?= $c['symbol'] ?>">
|
||||
<div>
|
||||
<span class="symbol"><?= $c['symbol'] ?></span>
|
||||
<span class="change <?= strpos($c['change'], '+') !== false ? 'text-success' : 'text-danger' ?>"><?= $c['change'] ?></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="price"><?= $c['price'] ?></div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Center Content -->
|
||||
<div class="terminal-content">
|
||||
<div class="content-header">
|
||||
<div class="header-pair">BTC/USDT</div>
|
||||
<div class="header-stat">
|
||||
<label><?= __('last_price') ?></label>
|
||||
<span class="text-success">64,234.50</span>
|
||||
</div>
|
||||
<div class="header-stat">
|
||||
<label>24h <?= __('change_24h') ?></label>
|
||||
<span class="text-success">+2.45%</span>
|
||||
</div>
|
||||
<div class="header-stat">
|
||||
<label>24h High</label>
|
||||
<span>65,120.00</span>
|
||||
</div>
|
||||
<div class="header-stat">
|
||||
<label>24h Low</label>
|
||||
<span>63,450.00</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="kline-container">
|
||||
<!-- Simulation of K-line -->
|
||||
<div id="tradingview_widget" style="height: 100%; width: 100%; display: flex; align-items: center; justify-content: center; background: #000;">
|
||||
<span style="color: #333; font-size: 24px; font-weight: bold;">TRADING VIEW CHART</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="trading-panels">
|
||||
<div class="order-form-container">
|
||||
<div class="order-form-tabs">
|
||||
<button class="active">Limit</button>
|
||||
<button>Market</button>
|
||||
</div>
|
||||
<div class="row g-3">
|
||||
<div class="col-6">
|
||||
<div class="input-group-custom">
|
||||
<label>Buy Price</label>
|
||||
<div class="input-wrapper">
|
||||
<input type="number" value="64234.50">
|
||||
<span class="suffix">USDT</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group-custom">
|
||||
<label>Amount</label>
|
||||
<div class="input-wrapper">
|
||||
<input type="number" placeholder="0.00">
|
||||
<span class="suffix">BTC</span>
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn-buy">Buy BTC</button>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="input-group-custom">
|
||||
<label>Sell Price</label>
|
||||
<div class="input-wrapper">
|
||||
<input type="number" value="64234.50">
|
||||
<span class="suffix">USDT</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group-custom">
|
||||
<label>Amount</label>
|
||||
<div class="input-wrapper">
|
||||
<input type="number" placeholder="0.00">
|
||||
<span class="suffix">BTC</span>
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn-sell">Sell BTC</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="order-history p-3">
|
||||
<h6 class="mb-3">Open Orders</h6>
|
||||
<table class="table table-dark table-sm small">
|
||||
<thead>
|
||||
<tr class="text-muted">
|
||||
<th>Time</th>
|
||||
<th>Type</th>
|
||||
<th>Side</th>
|
||||
<th>Price</th>
|
||||
<th>Amount</th>
|
||||
<th>Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td colspan="6" class="text-center py-4 text-muted">No records found</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Right Sidebar: Order Book -->
|
||||
<div class="terminal-right-sidebar">
|
||||
<div class="order-book">
|
||||
<div class="ob-header">
|
||||
<span>Price(USDT)</span>
|
||||
<span>Amount(BTC)</span>
|
||||
</div>
|
||||
<div class="ob-list asks">
|
||||
<?php for($i=0;$i<10;$i++):
|
||||
$p = 64235 + $i * 1.5;
|
||||
$a = rand(10, 1000) / 1000;
|
||||
$w = rand(10, 90);
|
||||
?>
|
||||
<div class="ob-row">
|
||||
<span class="price"><?= number_format($p, 2) ?></span>
|
||||
<span class="amount"><?= number_format($a, 4) ?></span>
|
||||
<div class="ob-row-bg" style="width: <?= $w ?>%"></div>
|
||||
</div>
|
||||
<?php endfor; ?>
|
||||
</div>
|
||||
<div class="ob-mid-price">
|
||||
<span class="val text-success">64,234.50</span>
|
||||
<span class="small text-muted">≈ $64,234.50</span>
|
||||
</div>
|
||||
<div class="ob-list bids">
|
||||
<?php for($i=0;$i<10;$i++):
|
||||
$p = 64233 - $i * 1.5;
|
||||
$a = rand(10, 1000) / 1000;
|
||||
$w = rand(10, 90);
|
||||
?>
|
||||
<div class="ob-row">
|
||||
<span class="price"><?= number_format($p, 2) ?></span>
|
||||
<span class="amount"><?= number_format($a, 4) ?></span>
|
||||
<div class="ob-row-bg" style="width: <?= $w ?>%"></div>
|
||||
</div>
|
||||
<?php endfor; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
437
index.php
437
index.php
@ -1,150 +1,293 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
@ini_set('display_errors', '1');
|
||||
@error_reporting(E_ALL);
|
||||
@date_default_timezone_set('UTC');
|
||||
require_once __DIR__ . '/includes/lang.php';
|
||||
require_once __DIR__ . '/includes/header.php';
|
||||
?>
|
||||
|
||||
$phpVersion = PHP_VERSION;
|
||||
$now = date('Y-m-d H:i:s');
|
||||
?>
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>New Style</title>
|
||||
<?php
|
||||
// Read project preview data from environment
|
||||
$projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? '';
|
||||
$projectImageUrl = $_SERVER['PROJECT_IMAGE_URL'] ?? '';
|
||||
?>
|
||||
<?php if ($projectDescription): ?>
|
||||
<!-- Meta description -->
|
||||
<meta name="description" content='<?= htmlspecialchars($projectDescription) ?>' />
|
||||
<!-- Open Graph meta tags -->
|
||||
<meta property="og:description" content="<?= htmlspecialchars($projectDescription) ?>" />
|
||||
<!-- Twitter meta tags -->
|
||||
<meta property="twitter:description" content="<?= htmlspecialchars($projectDescription) ?>" />
|
||||
<?php endif; ?>
|
||||
<?php if ($projectImageUrl): ?>
|
||||
<!-- Open Graph image -->
|
||||
<meta property="og:image" content="<?= htmlspecialchars($projectImageUrl) ?>" />
|
||||
<!-- Twitter image -->
|
||||
<meta property="twitter:image" content="<?= htmlspecialchars($projectImageUrl) ?>" />
|
||||
<?php endif; ?>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
:root {
|
||||
--bg-color-start: #6a11cb;
|
||||
--bg-color-end: #2575fc;
|
||||
--text-color: #ffffff;
|
||||
--card-bg-color: rgba(255, 255, 255, 0.01);
|
||||
--card-border-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: 'Inter', sans-serif;
|
||||
background: linear-gradient(45deg, var(--bg-color-start), var(--bg-color-end));
|
||||
color: var(--text-color);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
min-height: 100vh;
|
||||
text-align: center;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
body::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M-10 10L110 10M10 -10L10 110" stroke-width="1" stroke="rgba(255,255,255,0.05)"/></svg>');
|
||||
animation: bg-pan 20s linear infinite;
|
||||
z-index: -1;
|
||||
}
|
||||
@keyframes bg-pan {
|
||||
0% { background-position: 0% 0%; }
|
||||
100% { background-position: 100% 100%; }
|
||||
}
|
||||
main {
|
||||
padding: 2rem;
|
||||
}
|
||||
.card {
|
||||
background: var(--card-bg-color);
|
||||
border: 1px solid var(--card-border-color);
|
||||
border-radius: 16px;
|
||||
padding: 2rem;
|
||||
backdrop-filter: blur(20px);
|
||||
-webkit-backdrop-filter: blur(20px);
|
||||
box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.loader {
|
||||
margin: 1.25rem auto 1.25rem;
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border: 3px solid rgba(255, 255, 255, 0.25);
|
||||
border-top-color: #fff;
|
||||
border-radius: 50%;
|
||||
animation: spin 1s linear infinite;
|
||||
}
|
||||
@keyframes spin {
|
||||
from { transform: rotate(0deg); }
|
||||
to { transform: rotate(360deg); }
|
||||
}
|
||||
.hint {
|
||||
opacity: 0.9;
|
||||
}
|
||||
.sr-only {
|
||||
position: absolute;
|
||||
width: 1px; height: 1px;
|
||||
padding: 0; margin: -1px;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
white-space: nowrap; border: 0;
|
||||
}
|
||||
h1 {
|
||||
font-size: 3rem;
|
||||
font-weight: 700;
|
||||
margin: 0 0 1rem;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
p {
|
||||
margin: 0.5rem 0;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
code {
|
||||
background: rgba(0,0,0,0.2);
|
||||
padding: 2px 6px;
|
||||
border-radius: 4px;
|
||||
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
||||
}
|
||||
footer {
|
||||
position: absolute;
|
||||
bottom: 1rem;
|
||||
font-size: 0.8rem;
|
||||
opacity: 0.7;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
<div class="card">
|
||||
<h1>Analyzing your requirements and generating your website…</h1>
|
||||
<div class="loader" role="status" aria-live="polite" aria-label="Applying initial changes">
|
||||
<span class="sr-only">Loading…</span>
|
||||
</div>
|
||||
<p class="hint"><?= ($_SERVER['HTTP_HOST'] ?? '') === 'appwizzy.com' ? 'AppWizzy' : 'Flatlogic' ?> AI is collecting your requirements and applying the first changes.</p>
|
||||
<p class="hint">This page will update automatically as the plan is implemented.</p>
|
||||
<p>Runtime: PHP <code><?= htmlspecialchars($phpVersion) ?></code> — UTC <code><?= htmlspecialchars($now) ?></code></p>
|
||||
<link rel="stylesheet" href="assets/css/index.css?v=<?php echo time(); ?>">
|
||||
|
||||
<main class="container py-4">
|
||||
<!-- Hero Carousel -->
|
||||
<div id="heroCarousel" class="carousel slide mb-5" data-bs-ride="carousel">
|
||||
<div class="carousel-inner rounded-4 shadow-lg">
|
||||
<div class="carousel-item active">
|
||||
<div class="carousel-content p-5 text-white d-flex align-items-center" style="height: 480px; background: url('https://images.pexels.com/photos/6771574/pexels-photo-6771574.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2');">
|
||||
<div class="carousel-overlay"></div>
|
||||
<div class="container">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-lg-7">
|
||||
<h1 class="display-3 fw-bold mb-3"><?php echo __('hero_title'); ?></h1>
|
||||
<p class="lead fs-3 mb-4 text-light"><?php echo __('hero_subtitle'); ?></p>
|
||||
<a href="auth/register.php" class="btn btn-primary btn-lg px-5 py-3 fw-bold rounded-pill"><?php echo __('get_started'); ?></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="carousel-item">
|
||||
<div class="carousel-content p-5 text-white d-flex align-items-center" style="height: 480px; background: url('https://images.pexels.com/photos/6770610/pexels-photo-6770610.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2');">
|
||||
<div class="carousel-overlay"></div>
|
||||
<div class="container">
|
||||
<h1 class="display-3 fw-bold mb-3">Professional K-Line Chart</h1>
|
||||
<p class="lead fs-3 mb-4 text-light">Advanced analytical tools for precise market entries and exits.</p>
|
||||
<div class="d-flex gap-3">
|
||||
<a href="trade.php" class="btn btn-outline-light btn-lg px-5 py-3 fw-bold rounded-pill"><?php echo __('trade'); ?></a>
|
||||
<a href="market.php" class="btn btn-primary btn-lg px-5 py-3 fw-bold rounded-pill">View Markets</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="carousel-item">
|
||||
<div class="carousel-content p-5 text-white d-flex align-items-center" style="height: 480px; background: url('https://images.pexels.com/photos/6771178/pexels-photo-6771178.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2');">
|
||||
<div class="carousel-overlay"></div>
|
||||
<div class="container">
|
||||
<h1 class="display-3 fw-bold mb-3">Byro Mining Pool</h1>
|
||||
<p class="lead fs-3 mb-4 text-light">The most efficient mining experience with daily payouts.</p>
|
||||
<a href="mining.php" class="btn btn-success btn-lg px-5 py-3 fw-bold rounded-pill">Start Mining</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button class="carousel-control-prev" type="button" data-bs-target="#heroCarousel" data-bs-slide="prev">
|
||||
<span class="carousel-control-prev-icon p-3 bg-dark rounded-circle"></span>
|
||||
</button>
|
||||
<button class="carousel-control-next" type="button" data-bs-target="#heroCarousel" data-bs-slide="next">
|
||||
<span class="carousel-control-next-icon p-3 bg-dark rounded-circle"></span>
|
||||
</button>
|
||||
</div>
|
||||
</main>
|
||||
<footer>
|
||||
Page updated: <?= htmlspecialchars($now) ?> (UTC)
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<!-- Popular Markets (3x4 Layout) -->
|
||||
<section class="market-section mb-5">
|
||||
<div class="d-flex justify-content-between align-items-end mb-4">
|
||||
<h2 class="fw-bold m-0"><?php echo __('popular_markets'); ?></h2>
|
||||
<a href="market.php" class="text-decoration-none text-primary"><?php echo __('view_more') ?? 'View More'; ?> <i class="bi bi-arrow-right"></i></a>
|
||||
</div>
|
||||
<div class="row g-4" id="market-list">
|
||||
<?php
|
||||
$coins = [
|
||||
['symbol' => 'BTC', 'name' => 'Bitcoin', 'color' => '#f7931a', 'id' => 'bitcoin'],
|
||||
['symbol' => 'ETH', 'name' => 'Ethereum', 'color' => '#627eea', 'id' => 'ethereum'],
|
||||
['symbol' => 'USDT', 'name' => 'Tether', 'color' => '#26a17b', 'id' => 'tether'],
|
||||
['symbol' => 'BNB', 'name' => 'BNB', 'color' => '#f3ba2f', 'id' => 'binancecoin'],
|
||||
['symbol' => 'SOL', 'name' => 'Solana', 'color' => '#14f195', 'id' => 'solana'],
|
||||
['symbol' => 'XRP', 'name' => 'XRP', 'color' => '#23292f', 'id' => 'ripple'],
|
||||
['symbol' => 'ADA', 'name' => 'Cardano', 'color' => '#0033ad', 'id' => 'cardano'],
|
||||
['symbol' => 'DOGE', 'name' => 'Dogecoin', 'color' => '#c2a633', 'id' => 'dogecoin'],
|
||||
['symbol' => 'DOT', 'name' => 'Polkadot', 'color' => '#e6007a', 'id' => 'polkadot'],
|
||||
['symbol' => 'MATIC', 'name' => 'Polygon', 'color' => '#8247e5', 'id' => 'matic-network'],
|
||||
['symbol' => 'LINK', 'name' => 'Chainlink', 'color' => '#2a5ada', 'id' => 'chainlink'],
|
||||
['symbol' => 'SHIB', 'name' => 'Shiba Inu', 'color' => '#ffad00', 'id' => 'shiba-inu']
|
||||
];
|
||||
foreach ($coins as $coin):
|
||||
?>
|
||||
<div class="col-md-3">
|
||||
<div class="card coin-card h-100" data-symbol="<?php echo $coin['symbol']; ?>">
|
||||
<div class="card-body p-4">
|
||||
<div class="d-flex justify-content-between align-items-center mb-3">
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="https://assets.coingecko.com/coins/images/<?php
|
||||
$icon_ids = [
|
||||
'BTC' => '1/small/bitcoin.png',
|
||||
'ETH' => '279/small/ethereum.png',
|
||||
'USDT' => '325/small/tether.png',
|
||||
'BNB' => '825/small/binance-coin-logo.png',
|
||||
'SOL' => '4128/small/solana.png',
|
||||
'XRP' => '44/small/xrp-symbol-white-128.png',
|
||||
'ADA' => '975/small/cardano.png',
|
||||
'DOGE' => '5/small/dogecoin.png',
|
||||
'DOT' => '12171/small/polkadot.png',
|
||||
'MATIC' => '4713/small/matic-network.png',
|
||||
'LINK' => '877/small/chainlink.png',
|
||||
'SHIB' => '11939/small/shiba-inu.png'
|
||||
];
|
||||
echo $icon_ids[$coin['symbol']];
|
||||
?>" width="32" height="32" class="me-2" alt="<?php echo $coin['symbol']; ?>">
|
||||
<span class="fw-bold fs-5"><?php echo $coin['symbol']; ?></span>
|
||||
<small class="text-muted ms-2">/USDT</small>
|
||||
</div>
|
||||
<span class="change-badge badge bg-success">+0.00%</span>
|
||||
</div>
|
||||
<div class="price-display fs-3 fw-bold mb-3" id="price-<?php echo $coin['symbol']; ?>">$0.00</div>
|
||||
<div class="sparkline-container" style="height: 40px;">
|
||||
<canvas class="sparkline-canvas" id="spark-<?php echo $coin['symbol']; ?>"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Why Us -->
|
||||
<section class="why-us mb-5 py-5">
|
||||
<h2 class="text-center mb-5 fw-bold display-5"><?php echo __('why_choose_us'); ?></h2>
|
||||
<div class="row g-4">
|
||||
<div class="col-md-3">
|
||||
<div class="card h-100 border-0 bg-transparent text-center p-3">
|
||||
<div class="icon-box mb-4 mx-auto shadow-sm" style="background: linear-gradient(135deg, #0062ff, #00d2ff); color: #fff;">
|
||||
<i class="bi bi-shield-check fs-1"></i>
|
||||
</div>
|
||||
<h4 class="fw-bold mb-3"><?php echo __('advantage_1_title'); ?></h4>
|
||||
<p class="text-muted small px-2"><?php echo __('advantage_1_desc'); ?></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card h-100 border-0 bg-transparent text-center p-3">
|
||||
<div class="icon-box mb-4 mx-auto shadow-sm" style="background: linear-gradient(135deg, #26a69a, #4db6ac); color: #fff;">
|
||||
<i class="bi bi-graph-up-arrow fs-1"></i>
|
||||
</div>
|
||||
<h4 class="fw-bold mb-3"><?php echo __('advantage_2_title'); ?></h4>
|
||||
<p class="text-muted small px-2"><?php echo __('advantage_2_desc'); ?></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card h-100 border-0 bg-transparent text-center p-3">
|
||||
<div class="icon-box mb-4 mx-auto shadow-sm" style="background: linear-gradient(135deg, #ffad00, #ffcc33); color: #fff;">
|
||||
<i class="bi bi-headset fs-1"></i>
|
||||
</div>
|
||||
<h4 class="fw-bold mb-3"><?php echo __('advantage_3_title'); ?></h4>
|
||||
<p class="text-muted small px-2"><?php echo __('advantage_3_desc'); ?></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card h-100 border-0 bg-transparent text-center p-3">
|
||||
<div class="icon-box mb-4 mx-auto shadow-sm" style="background: linear-gradient(135deg, #8247e5, #9c6df5); color: #fff;">
|
||||
<i class="bi bi-cpu-fill fs-1"></i>
|
||||
</div>
|
||||
<h4 class="fw-bold mb-3"><?php echo __('advantage_4_title'); ?></h4>
|
||||
<p class="text-muted small px-2"><?php echo __('advantage_4_desc'); ?></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Partners (15 icons, 5 per row) -->
|
||||
<section class="partners mb-5 py-5 border-top border-secondary">
|
||||
<h2 class="text-center mb-5 fw-bold"><?php echo __('partners'); ?></h2>
|
||||
<div class="row row-cols-2 row-cols-md-5 g-4 text-center">
|
||||
<?php
|
||||
$partners = [
|
||||
['name' => 'Binance', 'color' => '#f3ba2f', 'icon' => 'bi-currency-bitcoin'],
|
||||
['name' => 'OKX', 'color' => '#ffffff', 'icon' => 'bi-box-seam'],
|
||||
['name' => 'Bybit', 'color' => '#ffb11a', 'icon' => 'bi-activity'],
|
||||
['name' => 'Huobi', 'color' => '#00b5f8', 'icon' => 'bi-globe'],
|
||||
['name' => 'Coinbase', 'color' => '#0052ff', 'icon' => 'bi-shield-shaded'],
|
||||
['name' => 'Kraken', 'color' => '#5741d9', 'icon' => 'bi-water'],
|
||||
['name' => 'KuCoin', 'color' => '#24ae8f', 'icon' => 'bi-gem'],
|
||||
['name' => 'MEXC', 'color' => '#1ea7e1', 'icon' => 'bi-cpu'],
|
||||
['name' => 'Gate.io', 'color' => '#e14f4f', 'icon' => 'bi-door-open'],
|
||||
['name' => 'Bitfinex', 'color' => '#00cf92', 'icon' => 'bi-lightning'],
|
||||
['name' => 'Gemini', 'color' => '#00cf92', 'icon' => 'bi-stars'],
|
||||
['name' => 'Upbit', 'color' => '#2a5ada', 'icon' => 'bi-arrow-up-right-circle'],
|
||||
['name' => 'Poloniex', 'color' => '#0a6a5d', 'icon' => 'bi-stack'],
|
||||
['name' => 'Bitstamp', 'color' => '#1d2128', 'icon' => 'bi-safe'],
|
||||
['name' => 'Bithumb', 'color' => '#ff8a00', 'icon' => 'bi-wallet2']
|
||||
];
|
||||
foreach ($partners as $p):
|
||||
?>
|
||||
<div class="col">
|
||||
<div class="partner-card p-4 rounded-4 d-flex flex-column align-items-center justify-content-center border-opacity-25" style="border: 1px solid <?php echo $p['color']; ?>40;">
|
||||
<div class="partner-icon mb-2 fs-2" style="color: <?php echo $p['color']; ?>"><i class="bi <?php echo $p['icon']; ?>"></i></div>
|
||||
<span class="fw-bold small text-light opacity-75"><?php echo $p['name']; ?></span>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||
<script>
|
||||
const symbols = ['BTCUSDT', 'ETHUSDT', 'BNBUSDT', 'SOLUSDT', 'XRPUSDT', 'ADAUSDT', 'DOGEUSDT', 'DOTUSDT', 'MATICUSDT', 'LINKUSDT'];
|
||||
const coinData = {};
|
||||
|
||||
function initPriceUpdate() {
|
||||
setInterval(() => {
|
||||
document.querySelectorAll('.coin-card').forEach(card => {
|
||||
const symbol = card.dataset.symbol;
|
||||
if (symbol === 'USDT') {
|
||||
updateUI('USDT', 1.000, 0.01);
|
||||
return;
|
||||
}
|
||||
|
||||
// Simulating real-time drift for demo
|
||||
if (!coinData[symbol]) {
|
||||
const basePrices = {
|
||||
'BTC': 64000, 'ETH': 3450, 'BNB': 590, 'SOL': 145,
|
||||
'XRP': 0.62, 'ADA': 0.58, 'DOGE': 0.16, 'DOT': 8.4,
|
||||
'MATIC': 0.92, 'LINK': 18.4, 'SHIB': 0.000025
|
||||
};
|
||||
coinData[symbol] = {
|
||||
price: basePrices[symbol] || 100,
|
||||
change: (Math.random() * 10 - 5).toFixed(2)
|
||||
};
|
||||
}
|
||||
|
||||
const drift = (Math.random() - 0.5) * (coinData[symbol].price * 0.0005);
|
||||
coinData[symbol].price += drift;
|
||||
const change = (parseFloat(coinData[symbol].change) + (Math.random() - 0.5) * 0.05).toFixed(2);
|
||||
|
||||
updateUI(symbol, coinData[symbol].price, change);
|
||||
});
|
||||
}, 1500);
|
||||
}
|
||||
|
||||
function updateUI(symbol, price, change) {
|
||||
const card = document.querySelector(`.coin-card[data-symbol="${symbol}"]`);
|
||||
if (!card) return;
|
||||
|
||||
const priceEl = card.querySelector('.price-display');
|
||||
const badge = card.querySelector('.change-badge');
|
||||
|
||||
const oldPrice = parseFloat(priceEl.innerText.replace('$', '').replace(',', ''));
|
||||
|
||||
// Smooth price transition simulation
|
||||
priceEl.innerText = '$' + price.toLocaleString(undefined, {
|
||||
minimumFractionDigits: symbol === 'SHIB' ? 6 : (price < 1 ? 4 : 2),
|
||||
maximumFractionDigits: symbol === 'SHIB' ? 6 : (price < 1 ? 4 : 2)
|
||||
});
|
||||
|
||||
if (Math.abs(price - oldPrice) > 0.000001) {
|
||||
priceEl.style.transition = 'color 0.3s';
|
||||
if (price > oldPrice) {
|
||||
priceEl.style.color = '#26a69a';
|
||||
setTimeout(() => priceEl.style.color = '', 400);
|
||||
} else {
|
||||
priceEl.style.color = '#ef5350';
|
||||
setTimeout(() => priceEl.style.color = '', 400);
|
||||
}
|
||||
}
|
||||
|
||||
badge.innerText = (change > 0 ? '+' : '') + change + '%';
|
||||
badge.className = `change-badge badge ${change >= 0 ? 'bg-success' : 'bg-danger'}`;
|
||||
}
|
||||
|
||||
// Sparklines
|
||||
document.querySelectorAll('.sparkline-canvas').forEach(canvas => {
|
||||
const ctx = canvas.getContext('2d');
|
||||
const isUp = Math.random() > 0.4;
|
||||
new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: {
|
||||
labels: new Array(10).fill(''),
|
||||
datasets: [{
|
||||
data: new Array(10).fill(0).map(() => Math.random() * 100),
|
||||
borderColor: isUp ? '#26a69a' : '#ef5350',
|
||||
borderWidth: 2,
|
||||
pointRadius: 0,
|
||||
fill: true,
|
||||
backgroundColor: isUp ? 'rgba(38, 166, 154, 0.1)' : 'rgba(239, 83, 80, 0.1)',
|
||||
tension: 0.4
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
plugins: { legend: { display: false } },
|
||||
scales: { x: { display: false }, y: { display: false } },
|
||||
maintainAspectRatio: false
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
initPriceUpdate();
|
||||
</script>
|
||||
|
||||
<?php require_once __DIR__ . '/includes/footer.php'; ?>
|
||||
|
||||
35
legal.php
Normal file
35
legal.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/includes/lang.php';
|
||||
require_once __DIR__ . '/includes/header.php';
|
||||
?>
|
||||
<main class="container py-5">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-10">
|
||||
<h1 class="mb-5 fw-bold"><?php echo __('privacy'); ?></h1>
|
||||
<div class="card bg-dark border-secondary p-5">
|
||||
<p class="text-muted mb-4">Last Updated: February 16, 2026</p>
|
||||
<section class="mb-5">
|
||||
<h3 class="fw-bold mb-3">Introduction</h3>
|
||||
<p class="text-muted">Byro ("we", "us", or "our") respects your privacy and is committed to protecting your personal data. This privacy policy informs you about how we look after your personal data when you visit our website.</p>
|
||||
</section>
|
||||
<section class="mb-5">
|
||||
<h3 class="fw-bold mb-3">The Data We Collect</h3>
|
||||
<p class="text-muted">We may collect, use, store and transfer different kinds of personal data about you, including Identity Data, Contact Data, Financial Data, and Technical Data.</p>
|
||||
</section>
|
||||
<section class="mb-5">
|
||||
<h3 class="fw-bold mb-3">How We Use Your Data</h3>
|
||||
<p class="text-muted">We will only use your personal data when the law allows us to. Most commonly, we will use your personal data to perform the contract we are about to enter into or have entered into with you.</p>
|
||||
</section>
|
||||
<section class="mb-5">
|
||||
<h3 class="fw-bold mb-3">Data Security</h3>
|
||||
<p class="text-muted">We have put in place appropriate security measures to prevent your personal data from being accidentally lost, used, or accessed in an unauthorized way.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h3 class="fw-bold mb-3">Your Legal Rights</h3>
|
||||
<p class="text-muted">Under certain circumstances, you have rights under data protection laws in relation to your personal data, including the right to request access, correction, erasure, or restriction of your personal data.</p>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php require_once __DIR__ . '/includes/footer.php'; ?>
|
||||
74
market.php
Normal file
74
market.php
Normal file
@ -0,0 +1,74 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/includes/lang.php';
|
||||
require_once __DIR__ . '/includes/header.php';
|
||||
?>
|
||||
<main class="container py-5">
|
||||
<h1 class="mb-4 fw-bold"><?php echo __('market'); ?></h1>
|
||||
<div class="card bg-dark border-secondary overflow-hidden">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-dark table-hover mb-0">
|
||||
<thead class="border-secondary">
|
||||
<tr class="text-muted small">
|
||||
<th class="ps-4">Coin</th>
|
||||
<th>Price</th>
|
||||
<th>24h Change</th>
|
||||
<th>24h Volume</th>
|
||||
<th class="text-end pe-4">Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="border-secondary">
|
||||
<?php
|
||||
$full_coins = [
|
||||
['name' => 'Bitcoin', 'symbol' => 'BTC', 'price' => '65,432.10', 'change' => '+2.5%', 'vol' => '32.1B'],
|
||||
['name' => 'Ethereum', 'symbol' => 'ETH', 'price' => '3,456.78', 'change' => '+1.8%', 'vol' => '15.4B'],
|
||||
['name' => 'Tether', 'symbol' => 'USDT', 'price' => '1.00', 'change' => '+0.01%', 'vol' => '45.2B'],
|
||||
['name' => 'BNB', 'symbol' => 'BNB', 'price' => '589.20', 'change' => '-0.5%', 'vol' => '1.2B'],
|
||||
['name' => 'Solana', 'symbol' => 'SOL', 'price' => '145.67', 'change' => '+5.2%', 'vol' => '3.8B'],
|
||||
['name' => 'XRP', 'symbol' => 'XRP', 'price' => '0.62', 'change' => '-1.2%', 'vol' => '800M'],
|
||||
['name' => 'Cardano', 'symbol' => 'ADA', 'price' => '0.45', 'change' => '+0.8%', 'vol' => '400M'],
|
||||
['name' => 'Dogecoin', 'symbol' => 'DOGE', 'price' => '0.16', 'change' => '+3.4%', 'vol' => '1.1B'],
|
||||
['name' => 'Polkadot', 'symbol' => 'DOT', 'price' => '8.90', 'change' => '-2.1%', 'vol' => '200M'],
|
||||
['name' => 'Polygon', 'symbol' => 'MATIC', 'price' => '0.92', 'change' => '+1.5%', 'vol' => '300M']
|
||||
];
|
||||
foreach ($full_coins as $coin):
|
||||
?>
|
||||
<tr class="align-middle">
|
||||
<td class="ps-4">
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="https://assets.coingecko.com/coins/images/<?php
|
||||
$icon_ids = [
|
||||
'BTC' => '1/small/bitcoin.png',
|
||||
'ETH' => '279/small/ethereum.png',
|
||||
'USDT' => '325/small/tether.png',
|
||||
'BNB' => '825/small/binance-coin-logo.png',
|
||||
'SOL' => '4128/small/solana.png',
|
||||
'XRP' => '44/small/xrp-symbol-white-128.png',
|
||||
'ADA' => '975/small/cardano.png',
|
||||
'DOGE' => '5/small/dogecoin.png',
|
||||
'DOT' => '12171/small/polkadot.png',
|
||||
'MATIC' => '4713/small/matic-network.png'
|
||||
];
|
||||
echo $icon_ids[$coin['symbol']] ?? '1/small/bitcoin.png';
|
||||
?>" width="32" height="32" class="me-3" alt="<?= $coin['symbol'] ?>">
|
||||
<div>
|
||||
<div class="fw-bold"><?php echo $coin['symbol']; ?></div>
|
||||
<div class="text-muted small"><?php echo $coin['name']; ?></div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="fw-bold">$<?php echo $coin['price']; ?></td>
|
||||
<td class="<?php echo strpos($coin['change'], '+') !== false ? 'text-success' : 'text-danger'; ?>">
|
||||
<?php echo $coin['change']; ?>
|
||||
</td>
|
||||
<td class="text-muted"><?php echo $coin['vol']; ?></td>
|
||||
<td class="text-end pe-4">
|
||||
<a href="/trade.php?symbol=<?php echo $coin['symbol']; ?>" class="btn btn-outline-primary btn-sm px-3">Trade</a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php require_once __DIR__ . '/includes/footer.php'; ?>
|
||||
122
mining.php
Normal file
122
mining.php
Normal file
@ -0,0 +1,122 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/includes/lang.php';
|
||||
require_once __DIR__ . '/includes/header.php';
|
||||
?>
|
||||
<div class="container py-5">
|
||||
<div class="text-center mb-5">
|
||||
<h1 class="display-4 fw-bold"><?= __('mining') ?></h1>
|
||||
<p class="lead text-muted">Join Byro's high-efficiency mining pools and earn daily rewards.</p>
|
||||
</div>
|
||||
|
||||
<div class="row g-4">
|
||||
<div class="col-md-4">
|
||||
<div class="card h-100 bg-dark border-secondary shadow-sm">
|
||||
<div class="card-body p-4">
|
||||
<div class="d-flex align-items-center mb-4">
|
||||
<img src="https://assets.coingecko.com/coins/images/1/small/bitcoin.png" width="40" height="40" class="me-3">
|
||||
<h3 class="m-0">BTC Pool</h3>
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<span class="text-muted">Est. APY</span>
|
||||
<span class="text-success fw-bold">12.5%</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<span class="text-muted">Minimum</span>
|
||||
<span>0.01 BTC</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between">
|
||||
<span class="text-muted">Term</span>
|
||||
<span>30 Days</span>
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn btn-primary w-100 py-2 fw-bold">Stake Now</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card h-100 bg-dark border-secondary shadow-sm">
|
||||
<div class="card-body p-4">
|
||||
<div class="d-flex align-items-center mb-4">
|
||||
<img src="https://assets.coingecko.com/coins/images/279/small/ethereum.png" width="40" height="40" class="me-3">
|
||||
<h3 class="m-0">ETH 2.0</h3>
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<span class="text-muted">Est. APY</span>
|
||||
<span class="text-success fw-bold">8.2%</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<span class="text-muted">Minimum</span>
|
||||
<span>0.1 ETH</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between">
|
||||
<span class="text-muted">Term</span>
|
||||
<span>Flexible</span>
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn btn-primary w-100 py-2 fw-bold">Stake Now</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card h-100 bg-dark border-secondary shadow-sm">
|
||||
<div class="card-body p-4">
|
||||
<div class="d-flex align-items-center mb-4">
|
||||
<img src="https://assets.coingecko.com/coins/images/325/small/tether.png" width="40" height="40" class="me-3">
|
||||
<h3 class="m-0">USDT Stable</h3>
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<span class="text-muted">Est. APY</span>
|
||||
<span class="text-success fw-bold">15.0%</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<span class="text-muted">Minimum</span>
|
||||
<span>100 USDT</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between">
|
||||
<span class="text-muted">Term</span>
|
||||
<span>90 Days</span>
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn btn-primary w-100 py-2 fw-bold">Stake Now</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-5 p-4 rounded-4" style="background: rgba(0, 98, 255, 0.05); border: 1px solid rgba(0, 98, 255, 0.2);">
|
||||
<h4 class="fw-bold mb-3">Why Mine with Byro?</h4>
|
||||
<div class="row g-4">
|
||||
<div class="col-md-4">
|
||||
<div class="d-flex gap-3">
|
||||
<i class="bi bi-lightning-charge-fill text-primary fs-3"></i>
|
||||
<div>
|
||||
<h6>Instant Payouts</h6>
|
||||
<p class="small text-muted">Daily settlements directly to your Byro wallet.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="d-flex gap-3">
|
||||
<i class="bi bi-shield-check text-primary fs-3"></i>
|
||||
<div>
|
||||
<h6>Insured Funds</h6>
|
||||
<p class="small text-muted">Your staked assets are protected by our SAFU fund.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="d-flex gap-3">
|
||||
<i class="bi bi-graph-up text-primary fs-3"></i>
|
||||
<div>
|
||||
<h6>Compound Earnings</h6>
|
||||
<p class="small text-muted">Automatically reinvest your rewards for higher yield.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php require_once __DIR__ . '/includes/footer.php'; ?>
|
||||
43
news.php
Normal file
43
news.php
Normal file
@ -0,0 +1,43 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/includes/lang.php';
|
||||
require_once __DIR__ . '/includes/header.php';
|
||||
?>
|
||||
<main class="container py-5">
|
||||
<h1 class="mb-4 fw-bold"><?php echo __('news'); ?></h1>
|
||||
<div class="row g-4">
|
||||
<div class="col-md-8">
|
||||
<p class="text-muted mb-5"><?php echo __('news_content'); ?></p>
|
||||
<?php for($i=1; $i<=5; $i++): ?>
|
||||
<div class="card bg-dark border-secondary mb-4 coin-card">
|
||||
<div class="card-body">
|
||||
<span class="badge bg-primary mb-2">Announcement</span>
|
||||
<h4 class="fw-bold">Byro Lists New Trading Pairs: ARB/USDT and OP/USDT</h4>
|
||||
<p class="text-muted small">February 14, 2026 • 5 min read</p>
|
||||
<p>We are excited to announce that Byro will list Arbitrum (ARB) and Optimism (OP) for spot trading. Deposits are now open...</p>
|
||||
<a href="#" class="btn btn-link p-0 text-primary">Read More <i class="bi bi-arrow-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<?php endfor; ?>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card bg-dark border-secondary p-4 sticky-top" style="top: 100px;">
|
||||
<h5 class="fw-bold mb-3">Newsletter</h5>
|
||||
<p class="small text-muted">Subscribe to get the latest crypto insights delivered to your inbox.</p>
|
||||
<div class="input-group mb-3">
|
||||
<input type="email" class="form-control bg-dark text-white border-secondary" placeholder="Email address">
|
||||
<button class="btn btn-primary">Join</button>
|
||||
</div>
|
||||
<hr class="border-secondary">
|
||||
<h5 class="fw-bold mb-3">Popular Topics</h5>
|
||||
<div class="d-flex flex-wrap gap-2">
|
||||
<span class="badge border border-secondary p-2">#Bitcoin</span>
|
||||
<span class="badge border border-secondary p-2">#Web3</span>
|
||||
<span class="badge border border-secondary p-2">#Ethereum</span>
|
||||
<span class="badge border border-secondary p-2">#DeFi</span>
|
||||
<span class="badge border border-secondary p-2">#NFTs</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php require_once __DIR__ . '/includes/footer.php'; ?>
|
||||
68
profile.php
Normal file
68
profile.php
Normal file
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
include __DIR__ . '/includes/header.php';
|
||||
|
||||
if (!$user) {
|
||||
header('Location: /auth/login.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Get balances
|
||||
$stmt = db()->prepare("SELECT * FROM user_balances WHERE user_id = ?");
|
||||
$stmt->execute([$user['id']]);
|
||||
$balances = $stmt->fetchAll();
|
||||
?>
|
||||
|
||||
<div class="section">
|
||||
<div class="container">
|
||||
<h1><?= __('personal') ?></h1>
|
||||
<div style="display: grid; grid-template-columns: 1fr 2fr; gap: 40px; margin-top: 40px;">
|
||||
<div style="background: var(--surface); padding: 30px; border-radius: 8px; border: 1px solid var(--border);">
|
||||
<div style="text-align: center; margin-bottom: 30px;">
|
||||
<i class="fas fa-user-circle" style="font-size: 80px; color: var(--primary);"></i>
|
||||
<h3 style="margin-top: 15px;"><?= htmlspecialchars($user['username']) ?></h3>
|
||||
<p style="color: var(--text-muted);"><?= htmlspecialchars($user['email'] ?? 'No email set') ?></p>
|
||||
</div>
|
||||
<div style="border-top: 1px solid var(--border); padding-top: 20px;">
|
||||
<p><strong>UID:</strong> <?= $user['id'] + 10000 ?></p>
|
||||
<p><strong>Status:</strong> <span style="color: var(--success)">Verified</span></p>
|
||||
</div>
|
||||
</div>
|
||||
<div style="background: var(--surface); padding: 30px; border-radius: 8px; border: 1px solid var(--border);">
|
||||
<h3>My Assets</h3>
|
||||
<table style="width: 100%; border-collapse: collapse; margin-top: 20px;">
|
||||
<thead>
|
||||
<tr style="text-align: left; color: var(--text-muted); font-size: 14px; border-bottom: 1px solid var(--border);">
|
||||
<th style="padding: 12px 0;">Asset</th>
|
||||
<th style="padding: 12px 0;">Available</th>
|
||||
<th style="padding: 12px 0;">Frozen</th>
|
||||
<th style="padding: 12px 0; text-align: right;">Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($balances as $b): ?>
|
||||
<tr style="border-bottom: 1px solid var(--border);">
|
||||
<td style="padding: 16px 0; font-weight: bold;"><?= $b['symbol'] ?></td>
|
||||
<td style="padding: 16px 0;"><?= number_format((float)$b['available'], 4) ?></td>
|
||||
<td style="padding: 16px 0;"><?= number_format((float)$b['frozen'], 4) ?></td>
|
||||
<td style="padding: 16px 0; text-align: right;">
|
||||
<a href="/trade.php" style="color: var(--primary); font-size: 14px;">Trade</a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<?php if (empty($balances)): ?>
|
||||
<tr>
|
||||
<td colspan="4" style="padding: 40px; text-align: center; color: var(--text-muted);">No assets found.</td>
|
||||
</tr>
|
||||
<?php endif; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<div style="margin-top: 30px; display: flex; gap: 16px;">
|
||||
<button class="btn btn-primary"><?= __('deposit') ?></button>
|
||||
<button class="btn btn-outline"><?= __('withdraw') ?></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php include __DIR__ . '/includes/footer.php'; ?>
|
||||
43
support.php
Normal file
43
support.php
Normal file
@ -0,0 +1,43 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/includes/lang.php';
|
||||
require_once __DIR__ . '/includes/header.php';
|
||||
?>
|
||||
<main class="container py-5">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-8">
|
||||
<h1 class="mb-4 fw-bold text-center"><?php echo __('submit_request'); ?></h1>
|
||||
<div class="card bg-dark border-secondary p-4">
|
||||
<form action="#" method="POST">
|
||||
<div class="mb-3">
|
||||
<label class="form-label text-muted small">Your Email Address</label>
|
||||
<input type="email" class="form-control bg-dark text-white border-secondary" placeholder="email@example.com" required>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label text-muted small">Issue Type</label>
|
||||
<select class="form-select bg-dark text-white border-secondary">
|
||||
<option>Account Access</option>
|
||||
<option>Deposit/Withdrawal</option>
|
||||
<option>Trading Issue</option>
|
||||
<option>Bug Report</option>
|
||||
<option>Other</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label text-muted small">Subject</label>
|
||||
<input type="text" class="form-control bg-dark text-white border-secondary" placeholder="Short description of the issue" required>
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<label class="form-label text-muted small">Description</label>
|
||||
<textarea class="form-control bg-dark text-white border-secondary" rows="5" placeholder="Please provide details about your request..." required></textarea>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary w-100 py-3 fw-bold">Submit Ticket</button>
|
||||
</form>
|
||||
<div class="mt-4 text-center small text-muted">
|
||||
Our typical response time is under 2 hours.
|
||||
For urgent issues, please use the live chat in the bottom right.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php require_once __DIR__ . '/includes/footer.php'; ?>
|
||||
64
swap.php
Normal file
64
swap.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/includes/lang.php';
|
||||
require_once __DIR__ . '/includes/header.php';
|
||||
?>
|
||||
<div class="container py-5 d-flex justify-content-center">
|
||||
<div class="card bg-dark border-secondary shadow-lg" style="width: 100%; max-width: 480px; border-radius: 24px;">
|
||||
<div class="card-body p-4">
|
||||
<h3 class="fw-bold mb-4"><?= __('swap') ?></h3>
|
||||
|
||||
<!-- From -->
|
||||
<div class="p-3 mb-2 rounded-4" style="background: #1e2329;">
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<span class="text-muted small">From</span>
|
||||
<span class="text-muted small">Balance: 0.00</span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center">
|
||||
<input type="number" class="form-control bg-transparent border-0 text-white fs-3 p-0 shadow-none w-50" placeholder="0.00">
|
||||
<div class="ms-auto d-flex align-items-center bg-dark p-2 rounded-pill px-3 cursor-pointer">
|
||||
<img src="https://assets.coingecko.com/coins/images/325/small/tether.png" width="24" height="24" class="me-2">
|
||||
<span class="fw-bold">USDT</span>
|
||||
<i class="bi bi-chevron-down ms-2"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Switch Icon -->
|
||||
<div class="text-center my-n3 position-relative" style="z-index: 2;">
|
||||
<div class="bg-dark border border-secondary rounded-circle d-inline-flex p-2 shadow-sm" style="cursor: pointer;">
|
||||
<i class="bi bi-arrow-down-up text-primary"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- To -->
|
||||
<div class="p-3 mt-n1 mb-4 rounded-4" style="background: #1e2329;">
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<span class="text-muted small">To</span>
|
||||
<span class="text-muted small">Balance: 0.00</span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center">
|
||||
<input type="number" class="form-control bg-transparent border-0 text-white fs-3 p-0 shadow-none w-50" placeholder="0.00" readonly>
|
||||
<div class="ms-auto d-flex align-items-center bg-dark p-2 rounded-pill px-3 cursor-pointer">
|
||||
<img src="https://assets.coingecko.com/coins/images/1/small/bitcoin.png" width="24" height="24" class="me-2">
|
||||
<span class="fw-bold">BTC</span>
|
||||
<i class="bi bi-chevron-down ms-2"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-4 small px-2">
|
||||
<div class="d-flex justify-content-between text-muted mb-1">
|
||||
<span>Rate</span>
|
||||
<span>1 BTC = 64,234.50 USDT</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between text-muted">
|
||||
<span>Slippage Tolerance</span>
|
||||
<span>0.5%</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary w-100 py-3 rounded-4 fw-bold fs-5">Swap Now</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php require_once __DIR__ . '/includes/footer.php'; ?>
|
||||
35
tos.php
Normal file
35
tos.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/includes/lang.php';
|
||||
require_once __DIR__ . '/includes/header.php';
|
||||
?>
|
||||
<main class="container py-5">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-10">
|
||||
<h1 class="mb-5 fw-bold"><?php echo __('terms'); ?></h1>
|
||||
<div class="card bg-dark border-secondary p-5">
|
||||
<p class="text-muted mb-4">Effective Date: February 16, 2026</p>
|
||||
<section class="mb-5">
|
||||
<h3 class="fw-bold mb-3">1. Acceptance of Terms</h3>
|
||||
<p class="text-muted">By accessing or using the Byro platform, you agree to be bound by these Terms of Service. If you do not agree to these terms, please do not use our services.</p>
|
||||
</section>
|
||||
<section class="mb-5">
|
||||
<h3 class="fw-bold mb-3">2. Eligibility</h3>
|
||||
<p class="text-muted">You must be at least 18 years old and have the legal capacity to enter into a binding agreement to use our platform. You are responsible for ensuring that your use of Byro complies with all local laws and regulations.</p>
|
||||
</section>
|
||||
<section class="mb-5">
|
||||
<h3 class="fw-bold mb-3">3. Account Security</h3>
|
||||
<p class="text-muted">You are responsible for maintaining the confidentiality of your account credentials and for all activities that occur under your account. You agree to notify Byro immediately of any unauthorized use of your account.</p>
|
||||
</section>
|
||||
<section class="mb-5">
|
||||
<h3 class="fw-bold mb-3">4. Trading Risks</h3>
|
||||
<p class="text-muted">Digital asset trading involves significant risk. Prices can be highly volatile, and you may lose your entire investment. Byro does not provide financial advice.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h3 class="fw-bold mb-3">5. Termination</h3>
|
||||
<p class="text-muted">Byro reserves the right to suspend or terminate your account at any time for any reason, including violation of these terms.</p>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<?php require_once __DIR__ . '/includes/footer.php'; ?>
|
||||
Loading…
x
Reference in New Issue
Block a user