【问题标题】:PHP File ManagerPHP 文件管理器
【发布时间】:2013-09-21 22:15:13
【问题描述】:

我最近开始为我的服务器开发一个 PHP 文件管理器,因为我认为它使用起来非常方便,并且可以让我重温我的 PHP 技能。无论如何,我有几个问题希望能得到解答...

  • 当我列出我的目录时,总是有几个“点”。例如:.、..、Folder_1、Folder_2 等...我将如何从我的目录列表中删除这些“点”?
  • 当我列出我的目录时,我当前的方法在列出带有下划线或名称中没有空格的文件夹时没有问题。但是,它不能处理名称中带有空格的文件夹。有没有办法让我的文件管理器正确识别和处理名称中的空格?

这是我当前的代码...

<?php
global $dir_path;
if (isset($_GET["directory"])) {
    $dir_path = $_GET["directory"];
    //echo $dir_path;
}
else {
    $dir_path = $_SERVER["DOCUMENT_ROOT"]."/";
}

$directories = scandir($dir_path);
foreach($directories as $entry) {
    if(is_dir($dir_path . "/" . $entry )) {
        echo "<a href=?directory=" . $dir_path . "" . $entry . "/" . "><li>" . $entry . "</li></a>";
    }
    else {}
}

?>

非常感谢您的帮助, 布兰登

附: “点”是否与我的服务器的 ext4 文件系统相关?这与我的问题并没有太大关系,我只是有点好奇。

【问题讨论】:

  • $dir_path = $_GET["directory"]; ...我必须告诉你,这非常不安全......我,所以我,而不是你,可以选择目录!
  • $_SERVER["DOCUMENT_ROOT"] 可能有斜杠 .. 或没有 ... 服务器依赖。短篇小说 - 你不能依赖它。
  • 删除“点”的唯一真正方法是检查它们 - if($name == '.' || $name == '..') continue;
  • @djot 感谢您的建议,我将尝试收紧事情并在未来使用更高效的代码。现在我想得到一个简单的版本,然后用更新的安全措施更新它,然后优化我的代码。你会碰巧知道我最初的问题的答案吗?
  • 关于空格,您必须将整个 href 放在引号中。这不是你的文件管理器的问题,而是 html 的问题。

标签: php filesystems file-manager ext4 scandir


【解决方案1】:

如果你只想要一个简单的版本:

foreach($directories as $entry) {
    if (is_dir($dir_path . "/" . $entry) && !in_array($entry, array('.','..'))) {
        echo "<a href=?directory=" . $dir_path . "" . $entry . "/" . "><li>" . $entry . "</li></a>";
    }
    else {}
}

这会检查. / .. 例如当前目录和后备目录。关于空间,这听起来很奇怪。是链接不起作用还是scandir?如果是链接,用%20替换空格,例如

$href="?directory=" . $dir_path . "" . str_replace(' ','%20',$entry) . "/";
echo "<a href='".$href.'"><li>' . $entry . '</li></a>';

我更可能认为是在 href 周围缺少引号 "",例如

echo '<a href="?directory="' . $dir_path . $entry . '/' . '"><li>' . $entry . '</li></a>';

相反。当您不添加引号时,带有空格的链接(例如“test 123”)将被浏览器解释为href=test,因为没有任何内容可以封装整个链接。应该是href="test 123"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    相关资源
    最近更新 更多