Jump to content

List all files on my server


JEB

Recommended Posts

Can I start by saying I know absolutly nothing about PHP, but I'm starting to learn, so please be gentle with me. All I want to do is produce a simple .php file that lists in date order all of the files in my server. I've got this code that runs fine on a test server, but on the server I want to run it in anger on is hosted, and the bin directory is set to chmod 111, and I can't change it. When my code gets to that dir it falls over.

Can someone help show me what I have to do to add so something to my code to skip certain directories I can list, such as bin or lib directories. Thank you.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
body, td {
font-size: 8pt;
font-family: sans-serif;
}
a:link, a:hover, a:active, a:visited {
font-size: 8pt;
color: #0000FF;
}
</style>
</head>
<body>
<?php

$dir = ".";
$directories = array();
$files = array();

function recursedir($rootdir){
$directories = array();
$files = array();
$dir = (substr($rootdir, -1) == '/') ? substr($rootdir, 0, -1) : $rootdir;
if(is_dir($dir)){
if($handle = opendir($dir)){
while(false !== ($file = readdir($handle))){
if($file != "." && $file != ".."){
$filename = $dir.'/'.$file;
if(is_dir($filename)){
$folder = $filename;
$files = array_merge($files, recursedir($filename));
//echo $folder."<br />";
} else {
$files[$filename] = filemtime($filename);
}
}
}
closedir($handle);
} else {
die('Could not open directory.');
}
} else {
die('Invalid directory.');
}
return $files;
}

$files = recursedir(".");
if($_GET['sort'] == 'alpha'){
if($_GET['mode'] == 'desc'){
krsort($files);
$highlight = 'alpha_desc';
} else {
ksort($files);
$highlight = 'alpha_asc';
}
} else {
if($_GET['mode'] == 'asc'){
asort($files, SORT_NUMERIC);
$highlight = 'date_asc';
} else {
arsort($files, SORT_NUMERIC);
$highlight = 'date_desc';
}
}
$sort_alpha_asc = ($highlight == 'alpha_asc') ? '<b>Asc</b>' : '<a href="?sort=alpha&mode=asc">Asc</a>';
$sort_alpha_desc = ($highlight == 'alpha_desc') ? '<b>Desc</b>' : '<a href="?sort=alpha&mode=desc">Desc</a>';
$sort_date_asc = ($highlight == 'date_asc') ? '<b>Asc</b>' : '<a href="?sort=date&mode=asc">Asc</a>';
$sort_date_desc = ($highlight == 'date_desc') ? '<b>Desc</b>' : '<a href="?sort=date&mode=desc">Desc</a>';
echo "Sort by: Date- $sort_date_asc | $sort_date_desc; Name- $sort_alpha_asc | $sort_alpha_desc<br />\n<br />\n";

echo "<table border=\"0\">\n<tr><td><u>File</u></td><td width=\"25\"></td><td><u>Size</u></td><td width=\"25\"></td><td><u>Last Modified</u></td></tr>\n";
foreach($files as $file => $timestamp){
echo "<tr><td><a href=\"$dir/$file\">$file</a></td><td></td><td>";
$filesize = filesize($file);
if($filesize >= 1048576){
echo round($filesize / 1048576, 1).'MB';
} else {
echo round($filesize / 1024, 1).'kb';
}
echo '</td><td></td><td>'.date('d M Y H:i:s', $timestamp)."</td></tr>\n";
}
echo '</table>';

?>
</body>
</html>
Link to comment
https://forums.phpfreaks.com/topic/27362-list-all-files-on-my-server/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.