[ Mini Kiebo ]
Server: Windows NT AKFAR_SERVER 10.0 build 26200 (Windows 10) AMD64
Path:
D:
/
xampp
/
htdocs
/
campus_repo
/
public
/
[
Home
]
File: new_password.php
<?php if (session_status() === PHP_SESSION_NONE) { session_start(); } require_once __DIR__ . '/../config/config.php'; require_once __DIR__ . '/../src/Database.php'; require_once __DIR__ . '/../src/Utils.php'; $pdo = Database::getConnection(); $message = ''; $validToken = false; $userId = null; if (isset($_GET['token'])) { $token = $_GET['token']; $stmt = $pdo->prepare("SELECT * FROM password_resets WHERE reset_token = ? AND expires_at > NOW()"); $stmt->execute([$token]); $reset = $stmt->fetch(PDO::FETCH_ASSOC); if ($reset) { $validToken = true; $userId = $reset['user_id']; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $newPassword = $_POST['password']; $confirmPassword = $_POST['confirm_password']; if ($newPassword !== $confirmPassword) { $message = "❌ Password baru dan konfirmasi tidak sama."; } else { $hashed = password_hash($newPassword, PASSWORD_DEFAULT); $stmt = $pdo->prepare("UPDATE users SET password = ? WHERE id = ?"); $stmt->execute([$hashed, $userId]); // Hapus token setelah digunakan $pdo->prepare("DELETE FROM password_resets WHERE reset_token = ?")->execute([$token]); $message = "✅ Password berhasil direset. Silakan login."; } } } else { $message = "❌ Token tidak valid atau sudah kadaluarsa."; } } ?>