diff --git a/public/search.php b/public/search.php index d84037d..dfc9ffc 100644 --- a/public/search.php +++ b/public/search.php @@ -4,43 +4,32 @@ require_once __DIR__ . '/../config/bootstrap.php'; require_once APP_ROOT . '/src/Database.php'; require_once APP_ROOT . '/src/RateLimit.php'; - // Rate limiting: 30 requests per minute $rateLimit = new RateLimit(30, 60); // Check rate limit if (!$rateLimit->check()) { - // Send rate limit headers http_response_code(429); header('Retry-After: ' . $rateLimit->getResetTime()); $rateLimit->sendHeaders(); - - // Display error page - include APP_ROOT . '/templates/header.php'; - echo '
'; - echo '
'; - echo '
'; - echo ' Trop de requêtes
'; - echo ' Vous avez dépassé la limite de ' . 30 . ' recherches par minute.'; - echo '
Veuillez réessayer dans ' . $rateLimit->getResetTime() . ' secondes.'; - echo '
'; - echo '
'; - echo '
'; - include APP_ROOT . '/templates/footer.php'; + + // Simple error page + echo 'Rate Limit'; + echo '

Trop de requêtes

'; + echo '

Vous avez dépassé la limite de 30 recherches par minute. Veuillez réessayer dans ' . $rateLimit->getResetTime() . ' secondes.

'; + echo ''; exit; } -// Send rate limit headers for successful requests $rateLimit->sendHeaders(); -// Periodic cleanup (1% chance) if (rand(1, 100) === 1) { $rateLimit->cleanup(); } -// Pagination (max 100 per page) +// Pagination - adjust to grid $page = isset($_GET['page']) ? intval($_GET['page']) : 1; -$itemsPerPage = min(100, isset($_GET['per_page']) ? intval($_GET['per_page']) : 20); +$itemsPerPage = 12; // Default grid size (3 rows × 4 columns) // Collect search parameters $searchParams = []; @@ -73,6 +62,7 @@ if (isset($_GET['is_doctoral'])) { } $validationError = null; +$showFilters = isset($_GET['filters']) && $_GET['filters'] === 'show'; try { $db = Database::getInstance(); @@ -93,7 +83,6 @@ try { $languages = $db->getLanguages(); } catch (InvalidArgumentException $e) { - // Input validation error error_log("Search validation error: " . $e->getMessage()); $validationError = $e->getMessage(); $results = []; @@ -107,7 +96,6 @@ try { $formats = []; $languages = []; } catch (Exception $e) { - // Database or other error error_log("Error in search: " . $e->getMessage()); $validationError = "Une erreur est survenue lors de la recherche."; $results = []; @@ -121,298 +109,431 @@ try { $formats = []; $languages = []; } - -include APP_ROOT . '/templates/header.php'; ?> - -
-
-

Rechercher un mémoire

- - - -
- Erreur de validation : -
- - - -
-
- -
- -
- -
-

Recherche dans le titre, sous-titre, synopsis, auteurs, promoteurs et mots-clés

+?> + + + + + + Recherche - Posterg + + + + + + +
+
+ ← Retour + + + + + + + + + + + + + + + +
- - -
- -
-
- -
-
- -
-
+ + +
+ ⚠
-
- - -
-
- -
-
- -
-
-
-
- - -
-
- -
-
- -
-
-
-
- - -
-
- -
-
- -
-
-
-
- - -
-
- -
-
- -
-
-
-
- - -
-
- -
-
- -
-
-
-
- - -
-
- -
-
- -
-
-
-
- - -
-
- -
-
- -
-
-
-
-
- - -
-
- -
- -
-
- - - - -
- résultat 1 ? 's' : ''; ?> trouvé 1 ? 's' : ''; ?> -
- - 0): ?> - - - - 1): ?> - - - - -
- Utilisez le formulaire ci-dessus pour rechercher des mémoires. -
- - -
-
- - + +
+
+ + + + + + +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+ + Réinitialiser +
+
+
+ + +
+
+ 0): ?> + + +
+
+

+

+

+ +
+ +
+ +
+
+
+ + +
+ Aucun résultat trouvé pour cette recherche. +
+ +
+ Utilisez la barre de recherche pour trouver des mémoires. +
+ +
+ + 1): ?> + + +
+ + + + + + diff --git a/src/cache/rate_limit/f528764d624db129b32c21fbca0cb8d6.json b/src/cache/rate_limit/f528764d624db129b32c21fbca0cb8d6.json index a8d44a6..c4bb177 100644 --- a/src/cache/rate_limit/f528764d624db129b32c21fbca0cb8d6.json +++ b/src/cache/rate_limit/f528764d624db129b32c21fbca0cb8d6.json @@ -1 +1 @@ -[1770895784,1770895787] \ No newline at end of file +[1770898865] \ No newline at end of file