Tuesday, August 21, 2007

Directory Lister Advanced


// false - don't allow switching to the parent-directory of this script

// true - allow simple switching to the parent-directory (via 'href')


$allow_parent = "false";


//configuration ends here---------------------------------------------------------------------------------------------------------------------------


//=======================================================================================

$path=$_GET["path"];

$SCRIPT_NAME=getenv("SCRIPT_NAME");

//put directory content in arrays-----------------------------------------------------------------------------------------------------------------

if (!isset($path)) { $path = "./"; }

if (!file_exists($path)) { echo "

File not found!

"; exit; }

if (strstr($path,"..")) { echo "

invalid path!

"; exit; }

$base_dir = getcwd();

if ($path=="/") { $path = "./"; }

chdir($path);

$current_dir = getcwd();

$directory = dir("./");

$directories_array = array();

$files_array = array();

while ($file = $directory->read()) {

if (is_dir($file) AND $file != ".") { $directories_array[] = $file; }

if (is_file($file)) { $files_array[] = $file; }

}

$directory->close();

//sort and output the arrays-----------------------------------------------------------------------------------------------------------------------

echo "

Directory listing for ".basename($current_dir)."

";

echo "";

echo "";

sort($directories_array);

foreach($directories_array as $value) {

if ($value=="..") { $new_path=strrev(substr(strstr(substr(strstr(strrev($path),"/"),1),"/"),1)); }

else { $new_path=$path.$value; }

if (($value != "..") OR ($base_dir != $current_dir)) {

echo ""; }

elseif ($allow_parent == "true") {

echo ""; }

}

sort($files_array);

foreach($files_array as $value) {

if($value != basename($SCRIPT_NAME) or $path!="./") {

$filesize=filesize($value);

if ($filesize > 1073741823) { $filesize = sprintf("%.1f",($filesize/1073741824))." GB"; }

elseif ($filesize > 1048575) { $filesize = sprintf("%.1f",($filesize/1048576))." MB"; }

elseif ($filesize > 1023) { $filesize = sprintf("%.1f",($filesize/1024))." kB"; }

else { $filesize = $filesize." byte"; }

echo "";

}

}

echo "
NameSizeDate
$value/".gmdate("d M Y H:i",filemtime($value))."
$value/".gmdate("d M Y H:i",filemtime($value))."
$value$filesize".gmdate("d M Y H:i",filemtime($value))."
";


?>
Copyright Ayon Baidya

No comments:

Post a Comment