File manager - Edit - /home/webapp69.cm.in.th/u69319090041/Shop41/public/profile.php
Back
<?php require_once __DIR__ . '/../config/config.php'; require_once __DIR__ . '/../includes/auth.php'; requireLogin(); $db = getDBConnection(); $userId = $_SESSION['user']['id']; $error = ''; $success = ''; // Delete Address if (isset($_GET['delete_addr'])) { $delId = (int)$_GET['delete_addr']; $stmt = $db->prepare("DELETE FROM addresses WHERE id = ? AND user_id = ?"); $stmt->execute([$delId, $userId]); $success = 'ลบที่อยู่สำเร็จ'; } // Set Default Address if (isset($_GET['default_addr'])) { $defId = (int)$_GET['default_addr']; $db->prepare("UPDATE addresses SET is_default = 0 WHERE user_id = ?")->execute([$userId]); $db->prepare("UPDATE addresses SET is_default = 1 WHERE id = ? AND user_id = ?")->execute([$defId, $userId]); $success = 'ตั้งค่าที่อยู่หลักสำเร็จ'; } // Update Profile Form if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action_profile'])) { verifyCSRFToken($_POST['csrf_token'] ?? ''); $fullname = sanitize($_POST['fullname'] ?? ''); $phone = sanitize($_POST['phone'] ?? ''); if (!empty($fullname)) { $stmt = $db->prepare("UPDATE users SET fullname = ?, phone = ? WHERE id = ?"); $stmt->execute([$fullname, $phone, $userId]); $_SESSION['user']['fullname'] = $fullname; $success = 'อัปเดตข้อมูลส่วนตัวเรียบร้อยแล้ว'; } } // Change Password Form if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action_password'])) { verifyCSRFToken($_POST['csrf_token'] ?? ''); $oldPass = $_POST['old_password'] ?? ''; $newPass = $_POST['new_password'] ?? ''; $stmt = $db->prepare("SELECT password FROM users WHERE id = ?"); $stmt->execute([$userId]); $user = $stmt->fetch(); if (!password_verify($oldPass, $user['password'])) { $error = 'รหัสผ่านเดิมไม่ถูกต้อง'; } elseif (strlen($newPass) < 6) { $error = 'รหัสผ่านใหม่ต้องมีความยาวอย่างน้อย 6 ตัวอักษร'; } else { $hashed = password_hash($newPass, PASSWORD_BCRYPT); $stmt = $db->prepare("UPDATE users SET password = ? WHERE id = ?"); $stmt->execute([$hashed, $userId]); $success = 'เปลี่ยนรหัสผ่านใหม่สำเร็จ'; } } // Fetch user info & saved addresses $userStmt = $db->prepare("SELECT * FROM users WHERE id = ?"); $userStmt->execute([$userId]); $userProfile = $userStmt->fetch(); $addrStmt = $db->prepare("SELECT * FROM addresses WHERE user_id = ? ORDER BY is_default DESC, id DESC"); $addrStmt->execute([$userId]); $addresses = $addrStmt->fetchAll(); if ($addresses) { foreach ($addresses as &$addr) { $addr = array_map(function($val) { return is_string($val) ? html_entity_decode($val, ENT_QUOTES, 'UTF-8') : $val; }, $addr); } } $pageTitle = "จัดการโปรไฟล์และที่อยู่"; require_once __DIR__ . '/../includes/header.php'; ?> <div class="row g-4 my-3"> <!-- Profile & Password --> <div class="col-md-6"> <div class="card card-custom p-4 mb-4"> <h4 class="fw-bold mb-3">⚙️ แก้ไขข้อมูลส่วนตัว</h4> <?php if (!empty($success)): ?> <div class="alert alert-success py-2"><?php echo $success; ?></div> <?php endif; ?> <?php if (!empty($error)): ?> <div class="alert alert-danger py-2"><?php echo $error; ?></div> <?php endif; ?> <form method="POST" action=""> <input type="hidden" name="csrf_token" value="<?php echo generateCSRFToken(); ?>"> <input type="hidden" name="action_profile" value="1"> <div class="mb-3"> <label class="form-label">อีเมล (ไม่สามารถเปลี่ยนได้)</label> <input type="email" class="form-control" value="<?php echo sanitize($userProfile['email']); ?>" disabled> </div> <div class="mb-3"> <label class="form-label">ชื่อ - นามสกุล *</label> <input type="text" name="fullname" class="form-control" required value="<?php echo sanitize($userProfile['fullname']); ?>"> </div> <div class="mb-3"> <label class="form-label">เบอร์โทรศัพท์</label> <input type="tel" name="phone" class="form-control" value="<?php echo sanitize($userProfile['phone']); ?>"> </div> <button type="submit" class="btn btn-primary-custom w-100 py-2">บันทึกการเปลี่ยนแปลง ✨</button> </form> </div> <!-- Password Change Card --> <div class="card card-custom p-4"> <h4 class="fw-bold mb-3">🔑 เปลี่ยนรหัสผ่าน</h4> <form method="POST" action=""> <input type="hidden" name="csrf_token" value="<?php echo generateCSRFToken(); ?>"> <input type="hidden" name="action_password" value="1"> <div class="mb-3"> <label class="form-label">รหัสผ่านปัจจุบัน *</label> <input type="password" name="old_password" class="form-control" required> </div> <div class="mb-3"> <label class="form-label">รหัสผ่านใหม่ *</label> <input type="password" name="new_password" class="form-control" required placeholder="อย่างน้อย 6 ตัวอักษร"> </div> <button type="submit" class="btn btn-outline-primary w-100 py-2">เปลี่ยนรหัสผ่าน 🔒</button> </form> </div> </div> <!-- Saved Addresses --> <div class="col-md-6"> <div class="card card-custom p-4"> <h4 class="fw-bold mb-3">🏠 ที่อยู่จัดส่งที่บันทึกไว้</h4> <?php if (empty($addresses)): ?> <p class="text-muted">คุณยังไม่มีที่อยู่จัดส่งที่บันทึกไว้ (ระบบจะบันทึกให้อัตโนมัติเมื่อสั่งซื้อสินค้า)</p> <?php else: ?> <div class="d-flex flex-column gap-3"> <?php foreach ($addresses as $a): ?> <div class="p-3 border rounded card-custom"> <div class="d-flex justify-content-between align-items-start"> <div> <h6 class="fw-bold mb-1"> <?php echo sanitize($a['recipient_name']); ?> (<?php echo sanitize($a['phone']); ?>) <?php if (!empty($a['is_default'])): ?> <span class="badge bg-primary ms-2">ที่อยู่หลัก</span> <?php endif; ?> </h6> <p class="small text-muted mb-0"> <?php echo sanitize($a['address_line']); ?> ต.<?php echo sanitize($a['district']); ?> อ.<?php echo sanitize($a['amphoe']); ?> จ.<?php echo sanitize($a['province']); ?> <?php echo sanitize($a['zipcode']); ?> </p> </div> <div class="d-flex gap-2"> <?php if (empty($a['is_default'])): ?> <a href="?default_addr=<?php echo $a['id']; ?>" class="btn btn-sm btn-outline-primary py-0">ตั้งเป็นที่อยู่หลัก</a> <?php endif; ?> <a href="?delete_addr=<?php echo $a['id']; ?>" class="btn btn-sm btn-outline-danger py-0" onclick="return confirm('คุณต้องการลบที่อยู่นี้หรือไม่?')">ลบ</a> </div> </div> </div> <?php endforeach; ?> </div> <?php endif; ?> </div> </div> </div> <?php require_once __DIR__ . '/../includes/footer.php'; ?>
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.22 |
proxy
|
phpinfo
|
Settings