diff --git a/fonctions.php b/fonctions.php index 320e7da..2ea7bc6 100644 --- a/fonctions.php +++ b/fonctions.php @@ -319,7 +319,12 @@ function validateShareKey($key) { $result = $stmt->execute(); if ($row = $result->fetchArray(SQLITE3_ASSOC)) { - return $row; + // S'assurer que le chemin est valide et sécurisé + $path = realpath($row['path']); + if ($path && isSecurePrivatePath($path)) { + $row['path'] = $path; + return $row; + } } return false; diff --git a/galeries-privees.php b/galeries-privees.php new file mode 100644 index 0000000..5a77f4b --- /dev/null +++ b/galeries-privees.php @@ -0,0 +1,172 @@ +isDot()) continue; + if ($file->isFile()) { + $extension = strtolower($file->getExtension()); + if (in_array($extension, ALLOWED_EXTENSIONS)) { + // Obtenir le chemin relatif depuis la racine du projet + $relativePath = str_replace('\\', '/', substr($file->getPathname(), strlen(realpath('./')))); + $url = $baseUrl . '/' . ltrim($relativePath, '/'); + // Vérifier que le fichier existe et est accessible + if (file_exists($file->getPathname())) { + $images[] = $url; + } + } + } + } + } + + // Tri des images pour mettre les "top" en premier + usort($images, function($a, $b) { + $isTopA = strpos(basename($a), '--top--') !== false; + $isTopB = strpos(basename($b), '--top--') !== false; + + if ($isTopA && !$isTopB) return -1; + if (!$isTopA && $isTopB) return 1; + + $pathA = realpath('.') . str_replace(getBaseUrl(), '', $a); + $pathB = realpath('.') . str_replace(getBaseUrl(), '', $b); + return filectime($pathB) - filectime($pathA); + }); + + $headerImage = !empty($images) ? $images[0] : null; + } +} +?> + + +
+ + +