File manager - Edit - /home/webapp69.cm.in.th/u69319090041/Shop41/public/forgot_password.php
Back
<?php require_once __DIR__ . '/../config/config.php'; require_once __DIR__ . '/../includes/auth.php'; $message = ''; $error = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { verifyCSRFToken($_POST['csrf_token'] ?? ''); $email = sanitize($_POST['email'] ?? ''); if (empty($email)) { $error = 'กรุณากรอกอีเมล'; } else { $db = getDBConnection(); $stmt = $db->prepare("SELECT id FROM users WHERE email = ?"); $stmt->execute([$email]); $user = $stmt->fetch(); if ($user) { $token = bin2hex(random_bytes(32)); $expires = date('Y-m-d H:i:s', strtotime('+1 hour')); $stmt = $db->prepare("UPDATE users SET reset_token = ?, reset_expires = ? WHERE email = ?"); $stmt->execute([$token, $expires, $email]); // Mock email sending notification $resetLink = SITE_URL . "/forgot_password.php?token=" . $token; $message = "ระบบส่งลิงก์สำหรับรีเซ็ตรหัสผ่านเรียบร้อยแล้ว (สำหรับทดสอบ: <a href='$resetLink'>คลิกที่นี่เพื่อตั้งรหัสผ่านใหม่</a>)"; } else { $error = 'ไม่พบบัญชีผู้ใช้ที่ใช้อีเมลนี้ในระบบ'; } } } // Reset token submission if (isset($_GET['token'])) { $token = sanitize($_GET['token']); $db = getDBConnection(); $stmt = $db->prepare("SELECT id FROM users WHERE reset_token = ? AND reset_expires > NOW()"); $stmt->execute([$token]); $user = $stmt->fetch(); if (!$user) { $error = 'ลิงก์รีเซ็ตรหัสผ่านไม่ถูกต้องหรือหมดอายุแล้ว'; } elseif ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['new_password'])) { $newPass = $_POST['new_password']; if (strlen($newPass) < 6) { $error = 'รหัสผ่านใหม่ต้องมีความยาวอย่างน้อย 6 ตัวอักษร'; } else { $hashed = password_hash($newPass, PASSWORD_BCRYPT); $stmt = $db->prepare("UPDATE users SET password = ?, reset_token = NULL, reset_expires = NULL WHERE id = ?"); $stmt->execute([$hashed, $user['id']]); $_SESSION['flash_success'] = 'เปลี่ยนรหัสผ่านใหม่สำเร็จ! กรุณาเข้าสู่ระบบ'; header('Location: ' . SITE_URL . '/login.php'); exit; } } } $pageTitle = "ลืมรหัสผ่าน"; require_once __DIR__ . '/../includes/header.php'; ?> <div class="row justify-content-center my-5"> <div class="col-md-5"> <div class="card card-custom p-4"> <div class="text-center mb-4"> <h3 class="fw-bold">🔒 ลืมรหัสผ่าน</h3> <p class="text-muted">กรอกอีเมลของคุณเพื่อรับลิงก์รีเซ็ตรหัสผ่าน</p> </div> <?php if (!empty($message)): ?> <div class="alert alert-success py-2"><?php echo $message; ?></div> <?php endif; ?> <?php if (!empty($error)): ?> <div class="alert alert-danger py-2"><?php echo $error; ?></div> <?php endif; ?> <?php if (isset($_GET['token']) && isset($user) && $user): ?> <form method="POST" action=""> <input type="hidden" name="csrf_token" value="<?php echo generateCSRFToken(); ?>"> <div class="mb-3"> <label class="form-label">รหัสผ่านใหม่ *</label> <input type="password" name="new_password" class="form-control" placeholder="อย่างน้อย 6 ตัวอักษร" required> </div> <button type="submit" class="btn btn-primary-custom w-100 py-2">ตั้งรหัสผ่านใหม่ ✅</button> </form> <?php else: ?> <form method="POST" action=""> <input type="hidden" name="csrf_token" value="<?php echo generateCSRFToken(); ?>"> <div class="mb-3"> <label class="form-label">อีเมล (Email) *</label> <input type="email" name="email" class="form-control" placeholder="name@example.com" required> </div> <button type="submit" class="btn btn-primary-custom w-100 py-2">ส่งลิงก์รีเซ็ตรหัสผ่าน ✉️</button> </form> <?php endif; ?> <div class="mt-4 text-center"> <a href="login.php" class="text-primary text-decoration-none">← กลับสู่หน้าเข้าสู่ระบบ</a> </div> </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