| Server IP : 3.111.61.48 / Your IP : 216.73.216.67 Web Server : Apache System : Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64 User : ubuntu ( 1000) PHP Version : 8.2.31 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/vhost/book.gyaniguru.org/ |
Upload File : |
<?php
$page_title = "My Account — GyaniGuru by JMC";
include 'includes/header.php';
// Redirect if not logged in
if (!isset($_SESSION['user_id'])) {
header("Location: login.php");
exit();
}
$user_id = $_SESSION['user_id'];
$user = get_row("SELECT * FROM users WHERE id = ?", [$user_id]);
// Fetch Orders
$orders = get_all("SELECT * FROM orders WHERE user_id = ? ORDER BY order_date DESC", [$user_id]);
?>
<style>
.account-tabs { display: flex; border-bottom: 2px solid var(--cream-dark); gap: 40px; margin-bottom: 40px; overflow-x: auto; }
.acc-tab { padding: 15px 0; color: var(--text-light); cursor: pointer; position: relative; font-weight: 600; white-space: nowrap; transition: 0.3s; }
.acc-tab:hover { color: var(--gerua); }
.acc-tab.active { color: var(--maroon); }
.acc-tab.active::after { content: ''; position: absolute; bottom: -2px; left: 0; width: 100%; height: 3px; background: var(--maroon); border-radius: 10px; }
.tab-content { display: none; padding: 10px 0; }
.tab-content.active { display: block; animation: fadeInUp 0.4s ease; }
.order-card { background: white; border-radius: var(--radius); border: 1px solid var(--cream-dark); padding: 25px; transition: 0.3s; }
.order-card:hover { box-shadow: 0 10px 30px rgba(0,0,0,0.05); transform: translateY(-3px); }
.order-item-row { display: flex; align-items: center; gap: 20px; padding: 15px 0; border-bottom: 1px solid var(--warm-white); }
.order-item-row:last-child { border-bottom: none; }
</style>
<div class="page-header py-5" style="background: var(--gradient-divine); border-bottom: 2px solid var(--gold); color: white;">
<div class="container d-flex align-items-center gap-4 py-3">
<div class="text-center shadow-lg" style="width: 100px; height: 100px; background: var(--gradient-saffron); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--dark-bg); font-size: 2.5rem; font-weight: 700; border: 3px solid var(--gold);">
<?php echo strtoupper(substr($user['name'], 0, 1)); ?>
</div>
<div>
<div class="badge bg-gold text-light mb-2 px-3">🔱 DIVINE MEMBER</div>
<h1 class="font-cinzel m-0 text-white"><?php echo $user['name']; ?></h1>
<p class="m-0" style="color: var(--gold-light); opacity: 0.9;"><i class="bi bi-envelope me-2"></i><?php echo $user['email']; ?></p>
</div>
<div class="ms-auto">
<a href="logout.php" class="btn btn-outline-light px-4" style="border-radius: 50px;">LOGOUT <i class="bi bi-box-arrow-right ms-2"></i></a>
</div>
</div>
</div>
<div class="container py-5">
<div class="account-tabs">
<div class="acc-tab active" data-target="profile">DASHBOARD & PROFILE</div>
<div class="acc-tab" data-target="orders">MY ORDERS (<?php echo count($orders); ?>)</div>
<div class="acc-tab" data-target="addresses">ADDRESS BOOK</div>
</div>
<!-- DASHBOARD -->
<div class="tab-content active" id="profile">
<div class="row g-4">
<div class="col-md-8">
<div class="order-card h-100 shadow-sm">
<h5 class="font-cinzel mb-4" style="color: var(--maroon); border-left: 5px solid var(--gold); padding-left: 15px;">Personal Information</h5>
<?php if(isset($_GET['success'])): ?>
<div class="alert alert-success py-2 mb-4" style="font-size:0.85rem">
<i class="bi bi-check-circle me-1"></i> Profile updated successfully!
</div>
<?php endif; ?>
<form action="update_profile.php" method="POST">
<div class="row g-3">
<div class="col-md-6">
<label class="form-label small text-uppercase fw-bold" style="color: var(--text-light)">Full Name</label>
<input type="text" name="name" class="form-control" style="background: var(--warm-white)" value="<?php echo htmlspecialchars($user['name']); ?>" required>
</div>
<div class="col-md-6">
<label class="form-label small text-uppercase fw-bold" style="color: var(--text-light)">Phone Number</label>
<input type="text" name="phone" class="form-control" style="background: var(--warm-white)" value="<?php echo htmlspecialchars($user['phone'] ?? ''); ?>" placeholder="10-digit mobile">
</div>
<div class="col-md-12">
<label class="form-label small text-uppercase fw-bold" style="color: var(--text-light)">Email Address (Read Only)</label>
<input type="email" class="form-control" style="background: var(--warm-white); opacity: 0.7;" value="<?php echo htmlspecialchars($user['email']); ?>" readonly>
</div>
<h6 class="font-cinzel mt-4 mb-2" style="color: var(--maroon); font-size: 0.9rem;">Shipping Defaults</h6>
<div class="col-12">
<label class="form-label small text-uppercase fw-bold" style="color: var(--text-light)">Street Address</label>
<textarea name="address" class="form-control" rows="2" style="background: var(--warm-white)" placeholder="House no, area, street..."><?php echo htmlspecialchars($user['address'] ?? ''); ?></textarea>
</div>
<div class="col-md-6">
<label class="form-label small text-uppercase fw-bold" style="color: var(--text-light)">City</label>
<input type="text" name="city" class="form-control" style="background: var(--warm-white)" value="<?php echo htmlspecialchars($user['city'] ?? ''); ?>">
</div>
<div class="col-md-6">
<label class="form-label small text-uppercase fw-bold" style="color: var(--text-light)">Pincode</label>
<input type="text" name="pincode" class="form-control" style="background: var(--warm-white)" value="<?php echo htmlspecialchars($user['pincode'] ?? ''); ?>">
</div>
</div>
<button type="submit" class="btn btn-saffron mt-4 px-5">UPDATE PROFILE</button>
</form>
</div>
</div>
<div class="col-md-4">
<div class="order-card mb-4 shadow-sm">
<h5 class="font-cinzel mb-4" style="color: var(--maroon); border-left: 5px solid var(--gold); padding-left: 15px;">Update Password</h5>
<form action="change_password.php" method="POST">
<div class="mb-3">
<label class="form-label small text-uppercase fw-bold" style="color: var(--text-light)">New Password</label>
<input type="password" name="new_password" class="form-control" style="background: var(--warm-white)" required>
</div>
<div class="mb-3">
<label class="form-label small text-uppercase fw-bold" style="color: var(--text-light)">Confirm New</label>
<input type="password" name="confirm_password" class="form-control" style="background: var(--warm-white)" required>
</div>
<button type="submit" class="btn btn-outline-gold w-100">CHANGE PASSWORD</button>
</form>
</div>
<div class="order-card text-center py-4 shadow-sm" style="background: var(--cream)">
<div class="mb-3"><i class="bi bi-patch-check-fill" style="font-size: 3rem; color: var(--gerua);"></i></div>
<h5 class="font-cinzel" style="color: var(--maroon)">Loyalty Member</h4>
<p style="color: var(--text-medium); font-size: 0.85rem;">You are tracking as a <strong>Seeker</strong>.</p>
</div>
</div>
</div>
</div>
<!-- ORDERS -->
<div class="tab-content" id="orders">
<?php if(empty($orders)): ?>
<div class="text-center py-5" style="color: var(--text-light)">
<i class="bi bi-journal-x display-1 mb-3 opacity-25"></i>
<h3 class="font-cinzel" style="color: var(--maroon)">No Orders Found</h3>
<p>Start your spiritual collection today.</p>
<a href="shop.php" class="btn btn-saffron mt-3">Explore Works 🕉️</a>
</div>
<?php else: ?>
<div class="row g-4">
<?php foreach($orders as $order): ?>
<div class="col-12">
<div class="order-card shadow-sm">
<div class="d-flex justify-content-between align-items-center mb-4">
<div>
<span class="badge me-2" style="background: var(--cream-dark); color: var(--maroon); font-size: 0.9rem;">#ORD-<?php echo $order['id']; ?></span>
<span class="text-muted small"><?php echo date('d M, Y', strtotime($order['order_date'])); ?></span>
</div>
<?php
$status_color = 'var(--gerua)';
if($order['status'] == 'Delivered') $status_color = '#27ae60';
if($order['status'] == 'Cancelled') $status_color = '#e74c3c';
?>
<span class="fw-bold" style="color: <?php echo $status_color; ?>;"><i class="bi bi-circle-fill me-2" style="font-size: 0.5rem;"></i><?php echo strtoupper($order['status']); ?></span>
</div>
<div class="order-items-wrap">
<?php
$order_id = $order['id'];
$items = get_all("SELECT oi.*, b.title, b.image FROM order_items oi JOIN books b ON oi.book_id = b.id WHERE oi.order_id = ?", [$order_id]);
foreach($items as $item):
?>
<div class="order-item-row">
<img src="<?php echo $item['image']; ?>" width="60" class="rounded shadow-sm" onerror="this.src='images/placeholder.png'">
<div class="flex-grow-1">
<div class="fw-bold" style="color: var(--text-dark)"><?php echo $item['title']; ?></div>
<div style="color: var(--text-light); font-size: 0.85rem;">Price: ₹<?php echo $item['price']; ?> | Qty: <?php echo $item['quantity']; ?></div>
</div>
<div class="fw-bold h5 mb-0" style="color: var(--maroon)">₹<?php echo $item['price'] * $item['quantity']; ?></div>
</div>
<?php endforeach; ?>
</div>
<div class="d-flex justify-content-between align-items-center mt-4 pt-3 border-top" style="border-color: var(--warm-white) !important">
<div style="color: var(--text-light); font-size: 0.85rem;">
Method: <span class="fw-bold" style="color: var(--text-dark)"><?php echo $order['payment_method']; ?></span>
<a href="track-order.php?id=<?php echo $order['id']; ?>&email=<?php echo $user['email']; ?>" class="ms-3 text-gerua-dark fw-bold text-decoration-none small"><i class="bi bi-geo-alt me-1"></i>Track Now</a>
</div>
<div class="h4 m-0 fw-bold" style="color: var(--maroon)">Total: ₹<?php echo $order['total_amount']; ?></div>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
</div>
<!-- ADDRESSES -->
<div class="tab-content" id="addresses">
<div class="order-card shadow-sm">
<div class="d-flex justify-content-between align-items-center mb-4">
<h5 class="font-cinzel m-0" style="color: var(--maroon)">Saved Addresses</h5>
<button class="btn btn-outline-gold btn-sm"><i class="bi bi-plus-lg me-1"></i> Add New Address</button>
</div>
<div class="row g-4">
<div class="col-md-6">
<div class="p-4 rounded h-100" style="background: var(--warm-white); border: 2px dashed var(--cream-dark)">
<div class="d-flex justify-content-between mb-3">
<span class="badge px-3 py-2" style="background: var(--gold); color: var(--dark-bg);">DEFAULT</span>
<i class="bi bi-house-door-fill" style="color: var(--gerua)"></i>
</div>
<h6 class="fw-bold m-0" style="color: var(--text-dark)"><?php echo $user['name']; ?></h6>
<p class="mt-2 mb-1" style="color: var(--text-medium); line-height: 1.5;"><?php echo $user['address'] ?: 'No address provided'; ?></p>
<p class="m-0" style="color: var(--text-medium);"><?php echo ($user['city'] ?? '') . ' ' . ($user['pincode'] ?? ''); ?></p>
<div class="mt-4 pt-3 border-top" style="border-color: var(--cream-dark) !important">
<button class="btn btn-sm text-primary p-0 me-4 fw-bold">EDIT</button>
<button class="btn btn-sm text-danger p-0 fw-bold">REMOVE</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
document.querySelectorAll('.acc-tab').forEach(tab => {
tab.addEventListener('click', () => {
document.querySelectorAll('.acc-tab').forEach(t => t.classList.remove('active'));
document.querySelectorAll('.tab-content').forEach(c => c.classList.remove('active'));
tab.classList.add('active');
document.getElementById(tab.dataset.target).classList.add('active');
});
});
</script>
<?php include 'includes/footer.php'; ?>