'+1 day', '3 ngày' => '+3 days', '1 tuần' => '+1 week', '1 tháng' => '+1 month', '2 tháng' => '+2 months', '3 tháng' => '+3 months', '1 năm' => '+1 year', ]; $strtotimeDuration = $durationMap[$expirationString] ?? null; if ($strtotimeDuration) { return strtotime($strtotimeDuration, $createdTime); } return null; } function isKeyExpired($keyData) { if ($keyData['expiration'] === 'vĩnh viễn') { return false; } $expireTimestamp = calculateExpirationTimestamp($keyData['created_at'], $keyData['expiration']); return ($expireTimestamp !== null && time() > $expireTimestamp); } function checkAndRemoveExpiredKeys() { $keys = loadKeys(); $originalCount = count($keys); $updatedKeys = array_filter($keys, function($keyData) { return !isKeyExpired($keyData); }); if (count($updatedKeys) !== $originalCount) { saveKeys(array_values($updatedKeys)); } return array_values($updatedKeys); } // --- Xử lý Đăng nhập Admin --- if (isset($_POST['login'])) { if (!verifyCsrfToken($_POST['csrf_token'] ?? '')) { $error = "Lỗi CSRF. Vui lòng thử lại."; } else { $pass = $_POST['password'] ?? ''; if (hash_equals($adminPassword, $pass)) { $_SESSION['admin'] = true; regenerateCsrfToken(); header("Location: ".$_SERVER['PHP_SELF']); exit(); } else { $error = "Mật khẩu admin không đúng!"; } } } if (!isset($_SESSION['admin'])) { ?> Admin - Đăng nhập

Đăng nhập Admin

".htmlspecialchars($error)."

"; ?>
$newKey, 'expiration' => $expiration, 'created_at' => date('Y-m-d H:i:s') ]; saveKeys($currentKeys); $_SESSION['flash_message'] = "✅ Thêm key thành công: " . htmlspecialchars($newKey); error_log("Added key: $newKey"); // Debug add } else { $_SESSION['flash_message'] = "⚠️ Key '" . htmlspecialchars($newKey) . "' đã tồn tại!"; error_log("Key exists: $newKey"); // Debug exists } } regenerateCsrfToken(); header("Location: ".$_SERVER['PHP_SELF'] . (isset($_GET['search']) ? '?search='.urlencode($_GET['search']) : '')); exit(); } if (isset($_POST['deleteKey'])) { $delKey = $_POST['key_to_delete'] ?? ''; $currentKeys = loadKeys(); $keysBeforeDelete = count($currentKeys); $updatedKeys = []; $deleted = false; foreach ($currentKeys as $keyData) { if ($keyData['key'] === $delKey) { $deleted = true; continue; } $updatedKeys[] = $keyData; } if ($deleted) { saveKeys($updatedKeys); $_SESSION['flash_message'] = "🗑️ Đã xóa key: " . htmlspecialchars($delKey); } else { $_SESSION['flash_message'] = "⚠️ Không tìm thấy key để xóa: " . htmlspecialchars($delKey); } regenerateCsrfToken(); header("Location: ".$_SERVER['PHP_SELF'] . (isset($_GET['search']) ? '?search='.urlencode($_GET['search']) : '')); exit(); } } } $keys = loadKeys(); $searchTerm = isset($_GET['search']) ? trim($_GET['search']) : ''; $filteredKeys = $keys; if (!empty($searchTerm)) { $filteredKeys = array_filter($keys, function($keyData) use ($searchTerm) { return stripos($keyData['key'], $searchTerm) !== false || stripos($keyData['expiration'], $searchTerm) !== false || (isset($keyData['created_at']) && stripos($keyData['created_at'], $searchTerm) !== false); }); } ?> Admin - Quản lý Key

Quản lý Key

Tìm thấy kết quả cho ""
⏳ Hạn: HẾT HẠN
📅 Tạo:
Đăng xuất