Filbrowser bugs
Hej eksperter!Jeg er så småt ved at udvikle en filbrowser i PHP, der laver en liste over filer og mapper på en given sti. Jeg har oven i købet lavet scriptet sådan, at man kan gå videre til de forskellige mapper ved at trykke på linket på dem. Jeg har bare 2 problemer, som jeg simpelthen ikke kan gennemskue:
- Scriptet sorterer efter endelsen, men derefter skulle den gerne sortere efter navnet, sådan at f.eks abe.css kommer før blomme.css indenfor css-filerne.
- Scriptet har et stort problem med filstørrelser. Den henter godt nok filstørrelserne på den første side (altså root, den mappe hvor scriptet selv ligger i), men derefter skriver den 0 på alle andre mapper. Der er dog en undtagelse: hvis jeg har en style.css i min root mappe, og en style.css i en anden mappe kopierer scriptet simpelthen filstørrelsen på filen i root mappen, og sætter den præcis samme størrelse ind i den anden mappe ud for style.css.
<?php
function sortByExtension( $e1, $e2 ) { //SORTS FILES BY EXTENSION
if ( $e1['end'] == $e2['end'] ) {
return 0;
}
return ( $e1['end'] < $e2['end'] ) ? -1 : 1;
}
function humanFileSize($size) { //CONVERTS BYTES INTO KB, MB and so on...
$filesizename = array(" bytes", " kb", " mb", " gb", " tb", " pb", " eb", " zb", " yb");
echo round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $filesizename[$i];
}
function getDir($dirname) { //GETS THE FILES IN A GIVEN DIRECTORY, AND ECHOES THEM
//GET FILES IN THE DIRECTORY DEFINED
$files = array();
$opendir=opendir("./".$dirname."/");
while (false !== ($file = readdir($opendir))) {
if($file != "." && $file != "..") {
$tmp = array();
$file_exploded = explode(".", $file);
$tmp['name'] = $file_exploded[0];
$tmp['end'] = $file_exploded[1];
$tmp['size'] = filesize($file);
$files[] = $tmp;
}
}
closedir($handle);
//SORT FILES BY EXTENSION
usort( $files, "sortByExtension" );
//ECHO THE FILES
for ($x = 0; $x < count($files); $x++) {
if ($files[$x]['end'] == NULL) {
echo "<tr>";
echo "<td style=\"width:65%;\">";
echo "<a href=\"?dir=" . $dirname . "/" . $files[$x]['name'] . "\">";
echo $files[$x]['name'];
echo "</a>";
echo "</td>";
echo "<td style=\"width:35%;\"></td>";
echo "</tr>";
}
else {
echo "<tr>";
echo "<td style=\"width:65%;\">";
echo $files[$x]['name'] . "." . $files[$x]['end'];
echo "</td>";
echo "<td style=\"width:35%;\">";
humanFileSize($files[$x]['size']);
echo "</td>";
echo "</tr>";
}
}
}
$dir = $_GET["dir"];
echo "<table cellspacing=\"0px\" cellpadding=\"0px\" style=\"width:300px;\">";
getDir($dir);
echo "</table>";
?>
Jeg håber der er nogen der kan gennemskue dette her, for jeg kan desværre ikke :(
