Directory listing

substr($md5, 0, 32), "mtime" => $stat["mtime"], "size" => $stat["size"]); } $fd = @fopen(".hashcache", "rb+");// or die("Error accessing cache file."); if (!$fd) { $fd = fopen(".hashcache", "wb+") or die("Problem accessing cache file."); $hashes = array(); } else { flock($fd, LOCK_SH); $data = fread($fd, filesize(".hashcache")); flock($fd, LOCK_SH); // Keep file open! We want to lock on it. $hashes = unserialize($data); unset($data); } $dir = opendir(".") or die("Script error 1.\n"); $changed = false; $filelist = array(); $dirlist = array(); while (($temp = readdir($dir)) !== false) { if ($temp[0] != '.' && $temp != 'index.php') { if (is_dir($temp)) $dirlist[] = $temp; else $filelist[] = $temp; } } closedir($dir); $dirlist[] = '..'; sort($filelist); sort($dirlist); foreach ($dirlist as $dirname) { $stat = stat($dirname); echo "\n"; } foreach ($filelist as $filename) { // Skip hidden files. if ($filename[0] == '.') continue; $stat = stat($filename); if (isset($hashes[$filename])) { // Check if ($hashes[$filename]["mtime"] != $stat["mtime"]) { if ($changed == false) { // Switch to exclusive lock - we're doing work! flock($fd, LOCK_UN); flock($fd, LOCK_EX); } $hashes[$filename] = updatefile($filename, $stat); $changed = true; } } else { if ($changed == false) { // Switch to exclusive lock - we're doing work! flock($fd, LOCK_UN); flock($fd, LOCK_EX); } $hashes[$filename] = updatefile($filename, $stat); $changed = true; } echo "\n"; } // Save changes? if ($changed) { rewind($fd); ftruncate($fd, 0); fwrite($fd, serialize($hashes)); } flock($fd, LOCK_UN); fclose($fd); ?>
File nameSizeLast modifiedMD5 Sum
[ $dirname ]Dir",date("M j Y H:i:s", $stat["mtime"]), "
$filename"; // if ($stat["size"] > 10485760) // echo round($stat["size"]/1048576, 2), " MiB"; // else if ($stat["size"] > 10240) // echo round($stat["size"]/1024, 2), " KiB"; // else echo number_format($stat["size"]); echo "",date("M j Y H:i:s", $stat["mtime"]),"", $hashes[$filename]["md5"], "