Files
2025-03-02 18:37:50 +08:00

59 lines
1.8 KiB
PHP

<?php
// 遍历demos文件夹下的所有文件夹,然后再遍历所有文件
$directory = new DirectoryIterator(dirname(__FILE__));
$folders = [];
$files = [];
foreach ($directory as $folderinfo) {
if ($folderinfo->isDir() && !$folderinfo->isDot()) {
$folders[] = $folderinfo->getFilename();
}
}
foreach ($folders as $folder) {
$subDirectory = new DirectoryIterator(dirname(__FILE__) . '/' . $folder);
foreach ($subDirectory as $fileinfo) {
if ($fileinfo->isFile() && $fileinfo->getExtension() == 'html') {
$files[] = $folder . '/' . $fileinfo->getFilename();
}
}
}
sort($folders);
sort($files);
?>
<div class="row">
<div class="col-3">
<div class="list-group">
<?php foreach ($files as $file): ?>
<a href="?file=<?php echo urlencode($file); ?>" class="list-group-item list-group-item-action">
<?php echo htmlspecialchars($file); ?>
</a>
<?php endforeach; ?>
</div>
</div>
<div class="col-9">
<div class="content">
<?php
if (isset($_GET['file'])) {
$file = $_GET['file'];
// Validate file path to prevent directory traversal
$realPath = realpath(dirname(__FILE__) . '/' . $file);
$basePath = realpath(dirname(__FILE__));
if ($realPath && strpos($realPath, $basePath) === 0 && file_exists($realPath) && is_readable($realPath)) {
if (pathinfo($realPath, PATHINFO_EXTENSION) == 'php') {
include $realPath;
} else {
echo file_get_contents($realPath);
}
} else {
echo '<p>File not found or not readable.</p>';
}
} else {
echo '<p>Select a file from the list.</p>';
}
?>
</div>
</div>
</div>