Initial commit: FuZip - Application de fusion interactive de fichiers ZIP
- Backend PHP: architecture MVC avec API REST (upload, merge, preview, extract) - Frontend JavaScript: composants modulaires (arborescence, upload, themes, i18n) - Fonctionnalités: drag&drop, sélection exclusive, détection conflits, persistance état - Sécurité: validation stricte, isolation sessions, sanitization chemins - UI/UX: responsive, thèmes clair/sombre, multi-langue (FR/EN) - Documentation: README complet avec installation et utilisation
This commit is contained in:
82
api/cleanup.php
Normal file
82
api/cleanup.php
Normal file
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
/**
|
||||
* API Cleanup - Nettoyage des sessions expirées
|
||||
*
|
||||
* Endpoint : GET /api/cleanup.php
|
||||
*
|
||||
* Paramètres : Aucun
|
||||
*
|
||||
* Réponse JSON :
|
||||
* {
|
||||
* "success": true,
|
||||
* "deleted_count": 3,
|
||||
* "message": "3 session(s) expirée(s) supprimée(s)"
|
||||
* }
|
||||
*
|
||||
* Note : Cette API est appelée automatiquement à chaque initialisation de session,
|
||||
* mais peut aussi être appelée manuellement pour forcer un nettoyage.
|
||||
*/
|
||||
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
|
||||
// CORS
|
||||
if (isset($_SERVER['HTTP_ORIGIN'])) {
|
||||
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
|
||||
header('Access-Control-Allow-Credentials: true');
|
||||
header('Access-Control-Max-Age: 86400');
|
||||
}
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
|
||||
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) {
|
||||
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
|
||||
}
|
||||
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) {
|
||||
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
|
||||
}
|
||||
exit(0);
|
||||
}
|
||||
|
||||
require_once __DIR__ . '/../core/Config.php';
|
||||
require_once __DIR__ . '/../core/SessionManager.php';
|
||||
|
||||
function sendResponse(array $data, int $httpCode = 200): void {
|
||||
http_response_code($httpCode);
|
||||
echo json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
|
||||
exit;
|
||||
}
|
||||
|
||||
function sendError(string $message, int $httpCode = 400): void {
|
||||
Config::log("Erreur API cleanup : {$message}", 'ERROR');
|
||||
sendResponse([
|
||||
'success' => false,
|
||||
'error' => $message
|
||||
], $httpCode);
|
||||
}
|
||||
|
||||
// Vérifier la méthode HTTP
|
||||
if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
|
||||
sendError('Méthode non autorisée. Utilisez GET.', 405);
|
||||
}
|
||||
|
||||
Config::log("Cleanup API - Nettoyage manuel demandé");
|
||||
|
||||
try {
|
||||
// Lancer le nettoyage
|
||||
$deletedCount = SessionManager::cleanOldSessions();
|
||||
|
||||
$message = $deletedCount > 0
|
||||
? "{$deletedCount} session(s) expirée(s) supprimée(s)"
|
||||
: "Aucune session expirée à supprimer";
|
||||
|
||||
Config::log("Cleanup terminé : {$message}");
|
||||
|
||||
sendResponse([
|
||||
'success' => true,
|
||||
'deleted_count' => $deletedCount,
|
||||
'message' => $message,
|
||||
'session_lifetime_hours' => Config::SESSION_LIFETIME / 3600
|
||||
]);
|
||||
|
||||
} catch (Exception $e) {
|
||||
sendError('Erreur lors du nettoyage : ' . $e->getMessage(), 500);
|
||||
}
|
||||
Reference in New Issue
Block a user