# Mini changelog:
# 18.06.02: v1.0 - This script was created fast on one day...
# 20.06.02: v1.1 - Fixed a little bug in line 214.
# 21.06.02: v1.2 - Added show/ignore filetype filters..
# 28.01.03: v1.3 - Added sorting of the file/dir list...
# 1.08.03: v1.4 - Added filesize to the listing...
# 13.08.03: v1.5 - Fixed a loop error, and a error with display filesize
#
# For more scripts.. go to http://php.holtsmark.no
# Rolf
# fix for older versions of PHP.
if (!isset($_GET) && !isset($_POST))
{
$_GET = @$HTTP_GET_VARS;
$_POST = @$HTTP_POST_VARS;
$_COOKIE = @$HTTP_COOKIE_VARS;
$_SESSION = @$HTTP_SESSION_VARS;
$_ENV = @$HTTP_ENV_VARS;
$_SERVER = @$HTTP_SERVER_VARS;
}
$topdir = "./"; // Don't touch this - go to the configuration part!
if (empty($_GET["dir"])) $dir="/";
if (!empty($_GET["dir"])) $dir=$_GET["dir"];
$debug = false; // Display debug messages?
$ver="1.5";
####################################################
# START OF CONFIGURATION
#
# Uncomment one of the $topdir configurations or create one yourself! Default listing is ./
#
# Most usefull examples:
# $topdir = $_SERVER["DOCUMENT_ROOT"]; // This will display the whole webserver directory.
# $topdir = "./"; // Current directory and below.
#
# Note:
# Listing files outside the webserver is possible,
# but accessing them with this script is not possible.
#
# Example:
# $topdir = "/"; // Linux root directory - Not recomended!
# $topdir = "/home/username/public_html/"; // A spesified directory
# $topdir = "/home/ftp";
# $topdir = "c:/ftp/"; //win32 envariment?
#
#
# Extra configuration - should not be needed.
# $otherlocation = "/path/on/the/web"; //files exist on another location?
# $otherlocation = "http://www.server.com/~username/files/"; //files exist on another location?
#
#
######
# Filter filetypes:
$filetypes = array("pdf","zip","png","jpg");
# $filetypes = array("cgi","inc","bak");
#
$filter = 0; // Only show $filetypes
#$filter = 1; // Ignore $filetypes, show the rest.
#
$sort = true; // Sort the listing: true / false.
$sort_type = SORT_REGULAR;
#
# SORT_REGULAR - compare items normally
# SORT_NUMERIC - compare items numerically
# SORT_STRING - compare items as strings
$show_filesize = true; // Show the filesize: false / true
# END OF CONFIGURATION
####################################################
if (!empty($otherlocation)) if ($otherlocation[strlen($otherlocation)-1] != '/') $otherlocation .= '/';
if (empty($otherlocation)) $otherlocation="";
function imgheader()
{
header("Expires: ".date("D, d M Y H:i:s",mktime(date("H"),date("i"),date("s"),date("m"),date("d")+1,date("Y"))));
}
function image_1()
{
imgheader();
header("Content-type: image/gif");
header("Content-length: 120");
echo base64_decode(
'R0lGODlhEgANAKIAAPf39///zpycAP/OnM7OY////wAAAP//nC'.
'wAAAAAEgANAAADRVglzKYwKgFCOEc8CQX5INE0kWCdqHUQ23Jh'.
'cDyw3RsfA7625g3nM54NA9TRJkOiLlj7LXFMZHE6iC5C2FCrYO'.
'h6v19IAgA7');
}
function image_2()
{
imgheader();
header("Content-type: image/gif");
header("Content-length: 109");
echo base64_decode(
'R0lGODlhEgALAKIAAP///8zMzJmZmWZmZgAAAAAAAAAAAAAAAC'.
'H5BAAAAAAALAAAAAASAAsAAAMyCLrcPjDKyEa4ON9B1HCOwHla'.
'BgliB3yChgZtSk6DeMprAC7wCNi0iUpBKBqPxp2SkQAAOw==');
}
function image_3()
{
imgheader();
header("Content-type: image/gif");
header("Content-length: 54");
echo base64_decode(
'R0lGODlhEgANAIAAAP///wAAACH5BAEAAAAALAAAAAASAA0AAA'.
'INhI+py+0Po5y02ovzKQA7');
}
function image_4()
{
imgheader();
header("Content-type: image/gif");
header("Content-length: 4247");
echo base64_decode(
'R0lGODlhpQAXAPcAAP///+v6/vP+/gY2meba1Pn5+dTU1AYvpb'.
'bFt6uumC5RrsfFuce8yrq2xZOXl9Hq1AU0htvc2pS16ubr+7fE'.
'xqmmqcm5tMvE1SM6iwQslfDw8P71/9zo/hY2h/T89Lu3pdbSyu'.
'Xk12N30f7/+TVirNjZ5fz8/BM4lNbl7QMpivX19era5au1thMs'.
'h/7+/qS23IaWxaq2x6247vz/7GqDtu3t7uDg4OX17v/5/6uqs/'.
'j//5unpc3Nzfjr9jhZmrXG2NfL2KeZtW1xq4WauLKpvObm5oel'.
'yHeXuNLJyBMsmQYoeqq2qoSZ1XSGyU5jlUFSrJ6nmqGalPT+7Z'.
'KbuPn/+gszeenp6WNwmKWnxYmp2XiXySpCmoiluhhFlrXF65ey'.
'y//8/yc3fazB2b29u8rY1EZVmXmPmZmpx4ebpsvb51t1uWqGzP'.
'7+9XeOvneX1kdlpN3c0F12pZulsbK7svX0/v7/8EZlusHCzMXL'.
'5J6t2riryChIjMvCwStUmLO8v8rRx7GvptLKudbY9MfbuJy0s7'.
'u80Xul1Pz//8zl9/j6/xg2fKjE5rGxsuzs4ru9tLbN+tnewBAs'.
'fFNoqWeFqNXc0//z9ZucqVmAsMfp6NTU3H6a5hEejtnW2Pj/9k'.
'Nyq8LKxCZAcvP46xczbsPCwvv93v/+++D2/Zmzqf/+/4unrHiK'.
'p/n/8bvR6/Hi2f7//+Lk79TGqT1omvnx7ktxvf/6+evh7MvKxD'.
'BEiP/8/J+61JSf1B1Lp//68FRvtv749cPMzLu0tOTq7v7/6K2u'.
'2nObqcXc+qrB/PD85WuNxGmRrLm0vfz7/7rV/6fW+eTw3KnCv7'.
'nQxJCh5NPJ5TpShVOBmvj04oOKtZvE67W0tuXu5/39/fn58eDl'.
'5v7+/9Dc2/j69fDr7vL48eLo3fb18/Dp8vLy8+3w6YSl567S6O'.
'7o6tLt/dDv422OvkBTwIvD2ilQhV6BxYywtMHSsMq+l8THst3m'.
'3t7c6OPj46/T0QUgbRQrVLzr9WyZ1JOAt4CKzIWJ0yH5BAAAAA'.
'AALAAAAAClABcAAAj/AAEIHCiwE5tDdFyxKQVGx7ERONi42ICj'.
'ExU6HjqB2TbjkKs621Dh2LABlQ4dqGjxGnEIzIY6UnSUEqYDTC'.
'k2uHDgMMGGVp1SM1xuGEFlGSoqGo/iAENHYE4crkZMBGPCBZie'.
'YMAkAgOAF5ilJUuZMEllVQAB4Uq5EsCGl6tVUnS6cEFQIJsRW5'.
'fxKrWBFi1ffqEeOnSSyqECALjWXQwArM4RvrKOxLHsEJsNpXDg'.
'+pqTIZhlWul0mlEqkQ5XfLUFmCFsho6tpVBu67TKAxWkI0boCB'.
'CADZgZOjeAEbmBjRQptwVQIepiIRgVuBi6OtTpWKdONw4lol6n'.
'k20BI3hV/wJTCVelQ6tpNaxTYARjAKVGlCqHA5UGXLu1ce+kQ9'.
'syV9u58h5jwghThw4CeCCFB9XgUMkIAgSwCkuJ1LFUHVop95o2'.
'LowgxV06pIUKBzBkYY82iWy1wTeGaTeYB4cIgMc/hpxjCh0B1M'.
'FLOAII0E0pZXmA13ZUxHSSDoMl4kEiARxCRTgs0WHaIQAIp02E'.
'qFAkHAeGMPHKUi09954AOhTwGh2DHXOSklYNRYtYqKDC04AE8Y'.
'eCEee4kcU/6yCIT40w6DCEEUb8QGIWTGTBBSIC6LgULQDgpoMM'.
'oBzASji2LYXcSBT5gguAQYRRRQqLKAfZITGcoRwVwm2W1TbCDP'.
'9WTh2rIBmUTjp5BsY3DJFUnADaaOXdD1UkgQcOoUhBBxhUCjQX'.
'XQDUQYUOQna4Sh1ssGFCKdzSYl4pm6FiGZ0DkZlHGEmcoISoTA'.
'QwxAkHhGFKFwdkwMQLGByQRBJKdMHEIbL08FUiAliG3gsDfHGD'.
'ADdIAcAq/yFJxTZ+jVCAKdeckIszpPSwwTJOOCHAOFRcVc1POt'.
'AhAEUjZAuGBmyQCYYL1QizTSL6ddIIL76gwhZFZ9VBhwxJ5HJD'.
'w8uA5Oyzcy111WTCbIALGx4geFycCwlHHbkCldJDKaZEgowpgs'.
'CTzwTO/JMEBxrsMwAxIRyDSQZacIBILxggssEEAeD/oA2SI4ST'.
'CDoQGPJPGUfw1gkdrLATCzyP6PAXLx7kkkE0jYRw9BddkOCGFl'.
'4iGMAi/gjRhAgwqNNGNIbQYAwTcbwgQCcC5MGEJDTgI8AM30xx'.
'Tio66NILDAEkUkjR0TBxBAwmjGCCCRwC8Gw0eRghxukyBADGlY'.
'800Ysaj0wgExtLueIw15fxEkAkWjzAyTlbWAKJFpFkEYMEBxwB'.
'BAHrDEADJINwRyQIUQQ6HIMWhElEKWgRAEIMoAVbeIIi2hCAbz'.
'RBFO+YxRYwEIcA0KEHwcjFJmQQgRWYYh2XyEC9OpCEBtQgANdQ'.
'xBO2UIYk+KAZEMhAF+jVhS3cAhEBmEIY/9phh11AgBkCoAMoUl'.
'CFPmDgDYog3hcOcI12JKEKYbDHc54HLRdowxMQgEAV3rCLEzTD'.
'AwFogiL68IYnbMIaHAhASMDgik5wDQCLO4YpMjCLVFgiFi0QBD'.
'SQMYABZCASA4AHEAKBDwiIYApcIMEJ0gCHHlRjNj4iTw9iAAF2'.
'4CMNCpDEK2wxAEOYIhgT8AcompENctTiCy1IhTyk0YpWcOANsc'.
'AEJOBAAHCYwghVYEYAnCECYqxDAoqQwDVaYAgJiOIFpkDBI5Sn'.
'iQ74gxzbUIchDuADL6gjBumwAQuqQI0D9MEdxRBHDwqggqoIRB'.
'smMIXaHoEJU+hDC854RBjG9v+AdcAgEqy4wTa+0rw7CgAXIShH'.
'Cw4wgDCawRGOoEEKtOAANByAGnqwADQOAIEDbOIW1igED2xQhB'.
'p0oy0jCcczIBCPMVCABCTARD8ysI5WrAASiGiBG2z6ijxsQhfy'.
'AIINQhCMN5ThArCABSUyMQFWKOAAByCBHV5AiXicQBdygMAZUn'.
'GCLDyAHQPYBAQaqoVM1GICWmgBIiABghXAwRtnSEEGCvcJPtig'.
'HuYIRQFQwYbWoIIXRthEIwiQhiS0zxCRUEcIVlALOAzADYJoxD'.
'EEkAhIcc1BvEABBDxxBDNgARDzcEQvOvCCCmSVGnKwwEpJQAxi'.
'7GAJjlhABF5oqPD/1MEZljPCB2LQjj78IAgDWEQmMvGAZ3SAHZ'.
'CwBwq4EEV58CATBPCGD7qJAAT8Ag4lwII1cjEEM2wBFH6AQQZ0'.
'MYUBQDISRhhGEpJRDHRIoANCwAMIfqEKY32CAUBAQiawAAF+vO'.
'EWNKDAJwRhhXIEwAumEIALyKEBfiThF7Zo5CV48I8wGMMGgRhF'.
'IZQAA3uIwxkCcIVlyXUTdSSjCiS4BBqIEAVAwEABXYgDFIQwgD'.
'1YIwhxaAEJ4mANOezgAwughA2Q0QJJTMAD4UCECHYRCyhMwpyT'.
'4OQtmqCLSWBgD2LggT9oEIcTzOIKR0ACAVBwiRPAwx94+0Eayr'.
'CFIxyB/wa7eAcXPDEAH0yizqrYLCFE4QlDXKILJ7jFFCiQDBJA'.
'AB40sMYY5PEMSbxNDk9IQiyIIQ0bTKANHeiDBzcgBjscIMBqyA'.
'AJsPAFUGyBBnlgR6BjAAQ4ZGMC3fDFHa+Uh12oMAlCqAARGCGJ'.
'E+RDEZaIRL16QQN6pSAMQtAFEYgQZHEQ+QkTsE8MIpECDJihDE'.
'z0QQziMY0wbCIJTxiCPBZBggFUQYUdIAGGUZCFLkSChVeABhne'.
'wNCOdgEZNKjCATDghBS0oAkHqMIzunzsdhwgErHrgFhbEIky5A'.
'IfQ8AABGCAhVskYQDTkAYBJvBPH9yoB27IwC7y8YUTNPQKz/+I'.
'hw+SkI90T+EHSABCEYJRADbc0Rek4EUJStCAHCSgAhVIQCG8UA'.
'gsJCAIcphCAn7OgiUEIQhABwYQIvAKU4gBESpYgSyywYE0FAIY'.
'RIgBFE4xjxg8Qw5oOAMFKGABWPABCDwAwgWUMQYGGIASKMADGt'.
'BAAQbEPAZiOEUqVLGDKETBEljoBxTkYIl+TCEVFdDDDszggAo4'.
'wBI5qAAjPlGIGCyBEaOgBwg+IQ8WWH7sS7AFJbgxARm84gYaSA'.
'cBSmALBsyjAjlQhh7GMIccDGMKZ/DDHUbBBxBYugClmLWDWkGA'.
'MWAjATmYgzxswQc+OCIBO3jtKZbA+yUAAhCMcIT/LczaA3EEwx'.
'mNWEEPQkAJHvAh7IzAfQWwsYQl+KEQcwAGAz7wCQOM4f9+sAAX'.
'UA9sBQSjgA2OEAiwQABIwAN3oAdQFwVAB3UOEAUVGAWnEAVQtw'.
'QsVnn9cAcIWAiMAAjAcAf4xQkX0HOZlwCMcAEGAAfp0AM90Aoh'.
'UAM2EAF/UAgsiA05AH4g6AjKMArAMAbAgATGVw4FgAsGFSL1wA'.
'm/4AdmhwDeMAiBYABL8AyMQH9z4AcN0AAfoAxEwAJ3EAFWAA4x'.
'SAfiAAe1sAJFUAKUIA8UgAX2F33KAAzKcAfKwAAXwABk8AkXcA'.
'FI4AgfUAiZ8AuUsAJAgAcXIA14QAF//2AAeDAMYAgF2LADzwAI'.
'p0AIgAAFUQAF8ZAAFuAHpxADlrAEULAEO7B2CNB7CPAJZGAAmS'.
'ANf/ABRIAFCGiIIXAP9mADcAAH91ACcMADeDAHYHgH9vcDz4AA'.
'd1AIDTAGtsADvmgOBbABd3QZ4eAMlPAHFsAAFoAEeBACBAAEIH'.
'AHwHABHzAKDYAE3Ph/owACcFAEssALPbACzgAJ4pA5KFACgXAB'.
'oxAIDMAACxCQSGABGXYBg4AHlAAEQGALjkAPIkUG60AAK+ANv7'.
'AAMUcAnEAGg4AA2OAHeuAHCMAHUBiKGYUADAAIjkABHzAGekAE'.
'Y7AA1McAfLAAn4AEgsAJrf+QjXzwh6NgC0DACfXwChOAAuIQAk'.
'IJCSHwA5+wANX3j7ZgCwhgCwsACy74B3AQCumQFXfkAiagAjVQ'.
'BBHACQawi0VgBVZwD2FpAGq5lmwZAfdQAypQAAVQDl9plnZZBD'.
'YgljzAlmJJCQbACYBpAzaAlnr5lzZgBTVwloDpDREgmGHJAzzw'.
'C5C5l5NZmXuplpZpAN4AmGpJCW5plngZAWvZmPdwl0VQlmZ5Dz'.
'eYCX0Ji5RACWJ5d5+JhNCzlfCkAhoAmjWgARpQDnRpBUVwD8I5'.
'nMIZnIgZl8/DThpQA7tZDrwJnMR5D6cZnMVZUmb5lcNZUr2Zm6'.
'cpnXcpmOCpmqr/eYOCGZ3gSZrdCZ5laQ7LmZjAeZqI2ZvOyZvb'.
'mZjBWZ7T2Z3CeZwFAD3acEfvxE7z6ZsqUKC4SZ8IypvMqQHIOR'.
'dyqQK+WQ5xWaDzuZ0R6pzNKaEQ6pu8OQ5xyU4QSp/lMA4cypwm'.
'uqAnmqAnuqAKupwaOqEGGqEFyk4gCqMVaqERupzmUAMe6k4Aqg'.
'0cog392Z9c5Cwm8KBySaNDCqRMyiFceaTQ4wJJmqQfSqU0CqUP'.
'aqByCaRHOqNy2ZW+OaVDKqZfaqVD2qUf+jzJeaRlqqbQo6Zkiq'.
'RTWqDPEz0A6iwDwaRP6qRe9J+MYacEAS3S8yxcMxd3OiBAeqiG'.
'eqh1dEGozuKnjfoeQLqojPoejlqpi9GniZqp8PSftfmnatpFau'.
'qn/smnfco0idqndeqnTVqnggoA8PQeqwqoSzMXtHqo0eNFUfqq'.
'tco0tgqldCGkArGqR/qoXdRFk7oYybqVlIqp0tOpXOOjnSqozd'.
'qrXkSp1RoQADs=');
}
if (empty($_GET["image"])) $image=0; else $image=$_GET["image"];
if ($image == 1) { image_1(); die(); }
if ($image == 2) { image_2(); die(); }
if ($image == 3) { image_3(); die(); }
if ($image == 4) { image_4(); die(); }
function f($size="1",$color="#000000",$face="Verdana")
{
echo ''."\n";
}
function endf()
{
echo ''."\n";
}
function br()
{
return '
'."\n";
}
function img($nr,$border=0)
{
global $_SERVER;
return '
';
}
function getext($filename)
{
$f = strrev($filename);
$ext = substr($f, 0, strpos($f,"."));
return strrev($ext);
}
function sw($i)
{
if ($i) return 0;
else return 1;
}
function my_filesize($file,$path="./") {
// First check if the file exists.
if(!is_file($path.$file)) exit("Datei existiert nicht!");
// Setup some common file size measurements.
$kb = 1024; // Kilobyte
$mb = 1024 * $kb; // Megabyte
$gb = 1024 * $mb; // Gigabyte
$tb = 1024 * $gb; // Terabyte
// Get the file size in bytes.
$size = filesize($path.$file);
/* If it's less than a kb we just return the size, otherwise we keep going until
the size is in the appropriate measurement range. */
if($size < $kb) {
return $size." B";
}
else if($size < $mb) {
return round($size/$kb,2)." KB";
}
else if($size < $gb) {
return round($size/$mb,2)." MB";
}
else if($size < $tb) {
return round($size/$gb,2)." GB";
}
else {
return round($size/$tb,2)." TB";
}
}
function listdir($dir="./",$toplevel="./",$otherlocation="")
{
global $_SERVER,$debug,$filetypes, $filter, $sort, $sort_type, $show_filesize;
$dir=str_replace('./','/',$dir);
$text = "";
if ($dir[strlen($dir)-1] != '/') $dir .= '/';
$path=$toplevel.$dir;
$path=str_replace('//','/',$path);
$path=str_replace('..','',$path);
echo 'Sie sind hier: '.$path.'
';
# if ($topdir == "./" ) {
# $realdir=str_replace('/./','/',dirname($_SERVER["SCRIPT_FILENAME"])."/".$path);
# echo "real path=".$realdir."
";
# } else
$realdir="$path";
if ($debug) {f(1); echo br().'$path = '.$path.br().'$dir = '.$dir.br().br(); endf();}
$diren=$dir;
if (!is_dir("$path")) die(f(2,"#FF0000")."Error $path is not a directory?");
$files = dir($path) or die("Error reading/opening $path");
while ($a = $files->read())
{
if (!empty($a)) $currentArray[] = $a;
}
if ($sort && (!$sort_type)) sort($currentArray);
if ($sort && $sort_type) sort($currentArray,$sort_type);
for ($i = 0; $i < count($currentArray); $i++)
{
$current = $currentArray[$i];
if (($current != "..") && ($current != "."))
{
$dir = $diren;
# echo "
if (is_dir(".$path.$current."))
";
if (is_dir($path.$current))
if ($debug) echo "\$dir = $dir - ";
if (is_dir($path.$current))
echo
''
.img(1).' '."\n"
.''
.$current.''.br();
else
{
if ($toplevel == "./") $dir = $path;
if ($debug) echo "\$dir = $dir - ";
$match = sw($filter);
if (!empty($filetypes[0]))
{
$ext=getext($current);
$match = $filter;
for ($e=0;$e'.$current.'';
if ($show_filesize) echo " (".my_filesize($current,$realdir).")";
echo br();
}
}
}
};
}
f(2);
echo '
Santana Dateien
';
echo ''.img(2).' ';
echo 'ein Verzeichniss hoeher'.br();
if (empty($topdir)) $topdir = "./";
if ($debug) { f(1); echo "listdir($dir,$topdir,$otherlocation);".br().br(); endf(); }
f(2); listdir($dir,$topdir,$otherlocation); endf();
echo '
';
?>