如何在 link 上更改 scandir 的目录
How to change directory for scandir on link
我想用scandir打印当前目录的内容的小脚本。这个想法是制作一个文件导航的小工具,可以预览 php 文件所在的目录,并可以在目录中导航。
问题是我不知道如何更改 scandir 的目录(通过 link)也许用 getpost 并刷新文件以输出内容。
实际上我的脚本只有在我将它放在我想浏览(并返回)的每个目录中时才有效。有没有办法通过仅将它放在我想开始导航并通过单击文件夹更改目录的目录中来使其工作?
我试图创建一个变量来转发 post 值并在当前输出上创建目录 links 就像 chdir(directory) 并在顶部添加一个 if/else它检查 getpost 中是否有内容,如果有则将目录更改为此而不是当前目录..但这只适用于 2 个文件夹然后停止工作..
<?php
$dir = '.';
$directories = array();
$files_list = array();
$files = scandir($dir);
foreach ($files as $file) {
if(($file != '.') && ($file != '..') && ($file != 'index.php') && ($file != 'assets')) {
if(is_dir($dir.'/'.$file)){
$directories[] = $file;
}
else {
$files_list[] = $file;
}
}
}
// Print Directory to screen
foreach ($directories as $directory) {
echo "<div class=\"wrapper\">";
echo "<a href=\"" . $directory . "\">";
echo "<div class=\"preview\">";
echo "<img src=\"assets/media/ordner.png\" alt=\"directory\" class=\"packshot zoom\" />";
echo "</div>";
echo "</a>";
echo "<div class=\"title\"><p>» " . $directory . "</p></div>";
echo "</div>";
}
// print files
foreach ($files_list as $file_list) {
$file_list_info = pathinfo($dir."/".$file_list);
$file_list_size = ceil(filesize($dir."/".$file_list)/1024);
$file_list_pic = array("jpeg", "jpg", "png", "gif", "svg", "bmp", "tiff");
if(in_array($file_list_info['extension'],$file_list_pic)) {
echo "<div class=\"wrapper\">";
echo "<a href=\"" . $file_list . "\" target=\"_blank\">";
echo "<div class=\"preview\">";
echo "<img src=\"" . $file_list . "\" alt=\"picture\" class=\"packshot\" />";
echo "</div>";
echo "</a>";
echo "<div class=\"title\"><p>" . $file_list . " (" . $file_list_size . "kb)</p></div>";
echo "</div>";
}
}
?>
您可以使用 $_GET 变量。
在文件的开头,您可以这样定义目录变量:
if(!empty($_GET['dir'])){
$dir = $_GET['dir'];
}else{
$dir = '.';
}
然后当你生成 links 时使用类似的东西
echo "<a href=\"?dir=" .$dir."/". $directory . "\">";
所以当你点击 link 时,它会重定向到 "index.php?dir=mydir"
并且页面会显示"./mydir/"的内容
我想用scandir打印当前目录的内容的小脚本。这个想法是制作一个文件导航的小工具,可以预览 php 文件所在的目录,并可以在目录中导航。
问题是我不知道如何更改 scandir 的目录(通过 link)也许用 getpost 并刷新文件以输出内容。
实际上我的脚本只有在我将它放在我想浏览(并返回)的每个目录中时才有效。有没有办法通过仅将它放在我想开始导航并通过单击文件夹更改目录的目录中来使其工作?
我试图创建一个变量来转发 post 值并在当前输出上创建目录 links 就像 chdir(directory) 并在顶部添加一个 if/else它检查 getpost 中是否有内容,如果有则将目录更改为此而不是当前目录..但这只适用于 2 个文件夹然后停止工作..
<?php
$dir = '.';
$directories = array();
$files_list = array();
$files = scandir($dir);
foreach ($files as $file) {
if(($file != '.') && ($file != '..') && ($file != 'index.php') && ($file != 'assets')) {
if(is_dir($dir.'/'.$file)){
$directories[] = $file;
}
else {
$files_list[] = $file;
}
}
}
// Print Directory to screen
foreach ($directories as $directory) {
echo "<div class=\"wrapper\">";
echo "<a href=\"" . $directory . "\">";
echo "<div class=\"preview\">";
echo "<img src=\"assets/media/ordner.png\" alt=\"directory\" class=\"packshot zoom\" />";
echo "</div>";
echo "</a>";
echo "<div class=\"title\"><p>» " . $directory . "</p></div>";
echo "</div>";
}
// print files
foreach ($files_list as $file_list) {
$file_list_info = pathinfo($dir."/".$file_list);
$file_list_size = ceil(filesize($dir."/".$file_list)/1024);
$file_list_pic = array("jpeg", "jpg", "png", "gif", "svg", "bmp", "tiff");
if(in_array($file_list_info['extension'],$file_list_pic)) {
echo "<div class=\"wrapper\">";
echo "<a href=\"" . $file_list . "\" target=\"_blank\">";
echo "<div class=\"preview\">";
echo "<img src=\"" . $file_list . "\" alt=\"picture\" class=\"packshot\" />";
echo "</div>";
echo "</a>";
echo "<div class=\"title\"><p>" . $file_list . " (" . $file_list_size . "kb)</p></div>";
echo "</div>";
}
}
?>
您可以使用 $_GET 变量。
在文件的开头,您可以这样定义目录变量:
if(!empty($_GET['dir'])){
$dir = $_GET['dir'];
}else{
$dir = '.';
}
然后当你生成 links 时使用类似的东西
echo "<a href=\"?dir=" .$dir."/". $directory . "\">";
所以当你点击 link 时,它会重定向到 "index.php?dir=mydir"
并且页面会显示"./mydir/"的内容