Php 索引文件夹:未检测到目录
Php 索引文件夹:未检测到目录,php,file,glob,readdir,scandir,Php,File,Glob,Readdir,Scandir,scandir返回文件名,而不是路径名,因此需要添加目录前缀: <?php $dir = ''; if(isset($_GET['dir']) && !empty($_GET['dir']) && !stristr($_GET['dir'], '.')){ $dir = $_GET['dir']; echo '<a href="files.
scandir
返回文件名,而不是路径名,因此需要添加目录前缀:
<?php
$dir = '';
if(isset($_GET['dir']) && !empty($_GET['dir']) && !stristr($_GET['dir'], '.')){
$dir = $_GET['dir'];
echo '<a href="files.php">Back to /</a><br><br>';
}
foreach(scandir('files'. $dir) as $filename){
if($filename == ".." || $filename == "."){
// do nothing. We want files and folders, not dots.
}
else
{
if(is_file($dir .'/'. $filename)){
echo '<a href="'. $filename .'">'. $filename .'</a><br>';
}
else
{
echo '<a href="files.php?dir='. $dir .'/'. $filename .'">'. $filename .' (dir)</a><br>';
}
}
}
?>
foreach(scandir('files'.$dir)作为$filename){
如果($filename==”。“| |$filename==”){
//什么也不做。我们想要的是文件和文件夹,而不是点。
}
其他的
{
如果(是_文件($filename)){
回声“
”;
}
其他的
{
回声“
”;
}
}
}
您在第一个链接中还缺少
files.php?
,第二个链接应该使用dir=
使其递归到子目录中。您可能需要更好地控制它。签出:要解决另一个问题(保持在同一路径中),请将?path=To?dir=@RobW更改为?path=To@RobW。我已经签出了,但这似乎比需要的要困难得多。我有files.php?
因为这将是指向该目录中文件的直接链接。现在我已经纠正了这一点,它检测到我放在files/folder1/
中的伪文件,但它将其作为文件夹读取。因此,它将文件/folder1/
列为文件夹,文件/dummy.txt
列为文件夹,当我进入文件/folder1/
时,它将文件/folder1/dummy.txt也检测为文件夹。(请参阅使用我的当前代码更新的问题)在文件的直接链接中仍然需要目录前缀。我已经更新了那个案例的答案,我发现了问题所在。我们忘了更改is_文件
函数中的路径我想我们都是人类。
<?php
$dir = '';
if(isset($_GET['dir']) && !empty($_GET['dir']) && !stristr($_GET['dir'], '.')){
$dir = $_GET['dir'];
echo '<a href="files.php">Back to /</a><br><br>';
}
foreach(scandir('files'. $dir) as $filename){
if($filename == ".." || $filename == "."){
// do nothing. We want files and folders, not dots.
}
else
{
if(is_file($dir .'/'. $filename)){
echo '<a href="'. $filename .'">'. $filename .'</a><br>';
}
else
{
echo '<a href="files.php?dir='. $dir .'/'. $filename .'">'. $filename .' (dir)</a><br>';
}
}
}
?>
foreach(scandir('files'. $dir) as $filename){
if($filename == ".." || $filename == "."){
// do nothing. We want files and folders, not dots.
}
else
{
if(is_file($filename)){
echo '<a href="files/'. $dir . '/' . $filename .'">'. $filename .'</a><br>';
}
else
{
echo '<a href="files.php?dir=' . $dir . '/' . $filename .'">'. $filename .' (dir)</a><br>';
}
}
}