我最近开始为我的服务器开发一个PHP文件管理器,因为我觉得使用它非常方便,并允许我提高我的PHP技能。无论如何,我有几个问题希望可以回答......
这是我目前的代码......
<?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 {}
}
&GT;
非常感谢任何帮助, 布兰登
P.S。 “Dots”是否与我的服务器的ext4文件系统有关?这与我的问题没有多大关系,我只是有点好奇。
答案 0 :(得分: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>';
代替。当您不添加quoutes时,浏览器会将带有空格的链接(例如“test 123”)解释为href=test
,因为没有任何内容可以封装整个链接。它应该是href="test 123"
。