59 lines
1.8 KiB
PHP
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>
|