38350-vm/kyc.php
2026-02-11 08:19:17 +00:00

185 lines
9.7 KiB
PHP

<?php
include 'header.php';
if (!isset($_SESSION['user_id'])) {
header("Location: login.php");
exit;
}
require_once 'db/config.php';
$db = db();
$stmt = $db->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$_SESSION['user_id']]);
$user = $stmt->fetch();
$status = $user['kyc_status'] ?? 0;
$message = '';
$error = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST' && $status != 1 && $status != 2) {
$name = $_POST['kyc_name'] ?? '';
$id_number = $_POST['kyc_id_number'] ?? '';
// Simple file handling for prototype
$upload_dir = 'uploads/kyc/';
if (!is_dir($upload_dir)) mkdir($upload_dir, 0777, true);
$front = '';
$back = '';
$handheld = '';
if (isset($_FILES['front']) && $_FILES['front']['error'] === 0) {
$front = $upload_dir . time() . '_front_' . $_FILES['front']['name'];
move_uploaded_file($_FILES['front']['tmp_name'], $front);
}
if (isset($_FILES['back']) && $_FILES['back']['error'] === 0) {
$back = $upload_dir . time() . '_back_' . $_FILES['back']['name'];
move_uploaded_file($_FILES['back']['tmp_name'], $back);
}
if (isset($_FILES['handheld']) && $_FILES['handheld']['error'] === 0) {
$handheld = $upload_dir . time() . '_handheld_' . $_FILES['handheld']['name'];
move_uploaded_file($_FILES['handheld']['tmp_name'], $handheld);
}
$stmt = $db->prepare("UPDATE users SET kyc_name = ?, kyc_id_number = ?, kyc_id_front = ?, kyc_id_back = ?, kyc_id_handheld = ?, kyc_status = 1 WHERE id = ?");
if ($stmt->execute([$name, $id_number, $front, $back, $handheld, $_SESSION['user_id']])) {
$status = 1;
$message = "KYC documents submitted successfully! Our team will review them shortly.";
} else {
$error = "Failed to submit KYC documents. Please try again.";
}
}
$status_labels = [
0 => ['text' => 'Unverified', 'color' => '#888', 'icon' => 'fa-user-slash'],
1 => ['text' => 'Under Review', 'color' => '#f0b90b', 'icon' => 'fa-clock'],
2 => ['text' => 'Verified', 'color' => 'var(--success-color)', 'icon' => 'fa-check-circle'],
3 => ['text' => 'Rejected', 'color' => 'var(--danger-color)', 'icon' => 'fa-times-circle'],
];
$current = $status_labels[$status];
?>
<main style="padding: 40px 20px; background: #0b0e11; min-height: calc(100vh - 64px);">
<div style="max-width: 800px; margin: 0 auto;">
<a href="profile.php" class="back-btn"><i class="fas fa-arrow-left"></i> Profile</a>
<div style="background: var(--card-bg); padding: 40px; border-radius: 24px; border: 1px solid var(--border-color);">
<div style="text-align: center; margin-bottom: 40px;">
<div style="width: 70px; height: 70px; background: rgba(0,82,255,0.1); border-radius: 50%; display: flex; align-items: center; justify-content: center; margin: 0 auto 20px; color: <?php echo $current['color']; ?>; font-size: 32px;">
<i class="fas <?php echo $current['icon']; ?>"></i>
</div>
<h2 style="margin: 0; font-size: 2rem;">Identity Verification</h2>
<p style="color: var(--text-muted); margin-top: 10px;">Status: <span style="color: <?php echo $current['color']; ?>; font-weight: bold;"><?php echo $current['text']; ?></span></p>
</div>
<?php if($message): ?>
<div style="background: rgba(14,203,129,0.1); color: var(--success-color); padding: 20px; border-radius: 12px; margin-bottom: 30px; border: 1px solid var(--success-color);">
<i class="fas fa-check-circle"></i> <?php echo $message; ?>
</div>
<?php endif; ?>
<?php if($error): ?>
<div style="background: rgba(246,70,93,0.1); color: var(--danger-color); padding: 20px; border-radius: 12px; margin-bottom: 30px; border: 1px solid var(--danger-color);">
<i class="fas fa-exclamation-circle"></i> <?php echo $error; ?>
</div>
<?php endif; ?>
<?php if($status == 0 || $status == 3): ?>
<form method="POST" enctype="multipart/form-data">
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 25px;">
<div>
<label style="display: block; margin-bottom: 10px; color: var(--text-muted); font-size: 14px;">Full Name</label>
<input type="text" name="kyc_name" placeholder="As shown on ID" required style="width: 100%; padding: 14px; background: #161a1e; border: 1px solid var(--border-color); color: white; border-radius: 12px; outline: none;">
</div>
<div>
<label style="display: block; margin-bottom: 10px; color: var(--text-muted); font-size: 14px;">ID / Passport Number</label>
<input type="text" name="kyc_id_number" placeholder="Enter ID number" required style="width: 100%; padding: 14px; background: #161a1e; border: 1px solid var(--border-color); color: white; border-radius: 12px; outline: none;">
</div>
</div>
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 25px; margin-bottom: 30px;">
<div>
<label style="display: block; margin-bottom: 12px; color: var(--text-muted); font-size: 14px;">ID Front Side</label>
<div class="upload-box" onclick="document.getElementById('file-front').click()">
<i class="fas fa-plus" id="icon-front"></i>
<span id="text-front">Upload Photo</span>
<input type="file" name="front" id="file-front" hidden onchange="previewFile(this, 'front')">
</div>
</div>
<div>
<label style="display: block; margin-bottom: 12px; color: var(--text-muted); font-size: 14px;">ID Back Side</label>
<div class="upload-box" onclick="document.getElementById('file-back').click()">
<i class="fas fa-plus" id="icon-back"></i>
<span id="text-back">Upload Photo</span>
<input type="file" name="back" id="file-back" hidden onchange="previewFile(this, 'back')">
</div>
</div>
</div>
<div style="margin-bottom: 40px;">
<label style="display: block; margin-bottom: 12px; color: var(--text-muted); font-size: 14px;">Handheld ID & Signature</label>
<div class="upload-box" style="height: 180px;" onclick="document.getElementById('file-handheld').click()">
<i class="fas fa-camera" id="icon-handheld" style="font-size: 32px;"></i>
<span id="text-handheld" style="margin-top: 10px;">Upload handheld photo with date</span>
<input type="file" name="handheld" id="file-handheld" hidden onchange="previewFile(this, 'handheld')">
</div>
</div>
<button type="submit" class="btn-primary" style="width: 100%; padding: 18px; font-size: 1.1rem; border-radius: 12px; font-weight: bold;">Submit for Verification</button>
</form>
<?php elseif($status == 1): ?>
<div style="text-align: center; padding: 40px 0;">
<p style="color: var(--text-muted); line-height: 1.8;">Your identity documents have been received and are currently being reviewed. This process usually takes 1-2 business days. We will notify you once the review is complete.</p>
<div style="margin-top: 30px; padding: 20px; background: rgba(240,185,11,0.05); border-radius: 12px; border: 1px solid rgba(240,185,11,0.1); display: inline-block;">
<i class="fas fa-info-circle"></i> You can still trade while waiting for verification.
</div>
</div>
<?php elseif($status == 2): ?>
<div style="text-align: center; padding: 40px 0;">
<p style="color: var(--success-color); font-weight: 500;">Congratulations! Your identity has been fully verified.</p>
<p style="color: var(--text-muted); margin-top: 10px;">You now have full access to all withdrawal limits and advanced trading features.</p>
</div>
<?php endif; ?>
</div>
</div>
</main>
<style>
.upload-box {
border: 2px dashed var(--border-color);
height: 140px;
border-radius: 16px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
cursor: pointer;
color: var(--text-muted);
transition: 0.3s;
background: rgba(255,255,255,0.01);
}
.upload-box:hover {
border-color: var(--primary-color);
background: rgba(0,82,255,0.02);
color: white;
}
.upload-box i { font-size: 24px; margin-bottom: 8px; }
.upload-box span { font-size: 13px; }
</style>
<script>
function previewFile(input, type) {
if (input.files && input.files[0]) {
const icon = document.getElementById('icon-' + type);
const text = document.getElementById('text-' + type);
icon.className = 'fas fa-check-circle';
icon.style.color = 'var(--success-color)';
text.innerText = input.files[0].name;
text.style.color = 'var(--success-color)';
}
}
</script>
<?php include 'footer.php'; ?>