🤩 File Manager - Mr.X
PHP:
8.3.33
Server:
Apache
OS:
Linux 5.14.0-611.49.1.el9_7.x86_64
User:
websparkit
Navigate
Upload:
Upload
New File
New Folder
Editing:addresses.php
<?php require_once __DIR__ . '/../includes/config.php'; require_once __DIR__ . '/../includes/db.php'; require_once __DIR__ . '/../includes/functions.php'; $page = 'addresses'; $page_title = 'My Addresses'; if (!is_logged_in()) { header('Location: ' . SITE_URL . 'pages/login.php'); exit; } if ($_SERVER['REQUEST_METHOD'] == 'POST' && verify_csrf($_POST[CSRF_TOKEN_NAME] ?? '')) { $first_name = trim($_POST['first_name']); $last_name = trim($_POST['last_name']); $phone = trim($_POST['phone']); $address_line1 = trim($_POST['address_line1']); $address_line2 = trim($_POST['address_line2'] ?? ''); $city = trim($_POST['city']); $state = trim($_POST['state']); $zip_code = trim($_POST['zip_code']); $type = $_POST['type'] ?? 'billing'; $is_default = isset($_POST['is_default']) ? 1 : 0; try { if ($is_default) { $db->prepare("UPDATE addresses SET is_default = 0 WHERE user_id = ?")->execute([$_SESSION['user_id']]); } $stmt = $db->prepare("INSERT INTO addresses (user_id, type, first_name, last_name, phone, address_line1, address_line2, city, state, zip_code, is_default) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); $stmt->execute([$_SESSION['user_id'], $type, $first_name, $last_name, $phone, $address_line1, $address_line2, $city, $state, $zip_code, $is_default]); set_flash('success', 'Address added successfully'); } catch (Exception $e) { set_flash('error', 'Failed to add address'); } header('Location: ' . SITE_URL . 'pages/addresses.php'); exit; } if (isset($_GET['delete'])) { $db->prepare("DELETE FROM addresses WHERE id = ? AND user_id = ?")->execute([intval($_GET['delete']), $_SESSION['user_id']]); set_flash('success', 'Address deleted'); header('Location: ' . SITE_URL . 'pages/addresses.php'); exit; } $addresses = $db->prepare("SELECT * FROM addresses WHERE user_id = ? ORDER BY is_default DESC, created_at DESC"); $addresses->execute([$_SESSION['user_id']]); $addresses = $addresses->fetchAll(); require_once '../includes/header.php'; require_once '../includes/navbar.php'; ?> <main> <section style="background: var(--light-marble); padding: 20px 0;"> <div class="container"> <nav aria-label="breadcrumb"> <ol class="breadcrumb mb-0"> <li class="breadcrumb-item"><a href="<?= SITE_URL ?>">Home</a></li> <li class="breadcrumb-item"><a href="<?= SITE_URL ?>pages/account.php">My Account</a></li> <li class="breadcrumb-item active">Addresses</li> </ol> </nav> </div> </section> <section style="padding: 60px 0;"> <div class="container"> <div class="d-flex justify-content-between align-items-center mb-4 flex-wrap gap-2"> <h1 style="font-size: 2rem; margin: 0;">My Addresses</h1> <button class="btn-luxury" data-bs-toggle="modal" data-bs-target="#addAddressModal"> <i class="fas fa-plus"></i> Add New Address </button> </div> <?php display_flash(); ?> <?php if (count($addresses) > 0): ?> <div class="row g-3"> <?php foreach ($addresses as $addr): ?> <div class="col-md-6"> <div style="background: var(--white); border-radius: 16px; padding: 25px; box-shadow: var(--shadow-sm); height: 100%;"> <div class="d-flex justify-content-between mb-2"> <span class="badge" style="background: var(--gradient-rose); color: white; padding: 5px 12px; border-radius: 20px; font-size: 0.75rem; text-transform: uppercase;"><?= $addr['type'] ?></span> <?php if ($addr['is_default']): ?> <span class="badge" style="background: var(--success); color: white; padding: 5px 12px; border-radius: 20px; font-size: 0.75rem;">DEFAULT</span> <?php endif; ?> </div> <h5 style="font-family: var(--font-primary); font-size: 1.1rem;"><?= htmlspecialchars($addr['first_name'] . ' ' . $addr['last_name']) ?></h5> <p style="color: var(--gray-700); margin-bottom: 10px;"> <?= htmlspecialchars($addr['address_line1']) ?><br> <?php if ($addr['address_line2']): ?><?= htmlspecialchars($addr['address_line2']) ?><br><?php endif; ?> <?= htmlspecialchars($addr['city']) ?>, <?= htmlspecialchars($addr['state']) ?> <?= htmlspecialchars($addr['zip_code']) ?> </p> <p style="color: var(--gray-600); margin-bottom: 15px;"> <i class="fas fa-phone"></i> <?= htmlspecialchars($addr['phone']) ?> </p> <a href="?delete=<?= $addr['id'] ?>" class="btn-outline-luxury" style="padding: 5px 15px; font-size: 0.8rem; border-color: var(--danger); color: var(--danger);" onclick="return confirm('Delete this address?')"> <i class="fas fa-trash"></i> Delete </a> </div> </div> <?php endforeach; ?> </div> <?php else: ?> <div class="text-center py-5" style="background: var(--white); border-radius: 16px;"> <i class="fas fa-map-marker-alt" style="font-size: 4rem; color: var(--soft-pink); margin-bottom: 20px;"></i> <h3>No addresses yet</h3> <p class="text-muted">Add an address for faster checkout</p> </div> <?php endif; ?> </div> </section> <!-- Add Address Modal --> <div class="modal fade" id="addAddressModal" tabindex="-1"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content" style="border-radius: 20px; border: none;"> <div class="modal-header" style="background: var(--gradient-rose); color: white; border-radius: 20px 20px 0 0;"> <h5 class="modal-title">Add New Address</h5> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button> </div> <form method="POST"> <?= csrf_field() ?> <div class="modal-body" style="padding: 30px;"> <div class="row g-3"> <div class="col-md-6"> <label class="form-label">First Name *</label> <input type="text" name="first_name" class="form-control" required style="border-radius: 25px; padding: 10px 20px;"> </div> <div class="col-md-6"> <label class="form-label">Last Name *</label> <input type="text" name="last_name" class="form-control" required style="border-radius: 25px; padding: 10px 20px;"> </div> <div class="col-md-12"> <label class="form-label">Phone *</label> <input type="tel" name="phone" class="form-control" required style="border-radius: 25px; padding: 10px 20px;"> </div> <div class="col-md-12"> <label class="form-label">Address *</label> <input type="text" name="address_line1" class="form-control" required style="border-radius: 25px; padding: 10px 20px;"> </div> <div class="col-md-12"> <label class="form-label">Apt / Suite</label> <input type="text" name="address_line2" class="form-control" style="border-radius: 25px; padding: 10px 20px;"> </div> <div class="col-md-6"> <label class="form-label">City *</label> <input type="text" name="city" class="form-control" required style="border-radius: 25px; padding: 10px 20px;"> </div> <div class="col-md-6"> <label class="form-label">State *</label> <input type="text" name="state" class="form-control" required style="border-radius: 25px; padding: 10px 20px;"> </div> <div class="col-md-6"> <label class="form-label">ZIP *</label> <input type="text" name="zip_code" class="form-control" required style="border-radius: 25px; padding: 10px 20px;"> </div> <div class="col-md-6"> <label class="form-label">Type *</label> <select name="type" class="form-control" style="border-radius: 25px; padding: 10px 20px;"> <option value="billing">Billing</option> <option value="shipping">Shipping</option> </select> </div> <div class="col-md-12"> <div class="form-check"> <input class="form-check-input" type="checkbox" id="default" name="is_default"> <label class="form-check-label" for="default">Set as default</label> </div> </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button> <button type="submit" class="btn-luxury"><i class="fas fa-save"></i> Save Address</button> </div> </form> </div> </div> </div> </main> <?php require_once '../includes/footer.php'; ?>
Save Changes
Cancel
Create New File
Create New Folder