Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2 | daniel-mar | 1 | <?php |
2 | |||
3 | require 'DirectoryHashCalculator.class.php'; |
||
4 | |||
5 | define('VER', '09.03.2010 21:30'); |
||
6 | |||
7 | error_reporting(E_ALL | E_NOTICE); |
||
8 | |||
9 | $path = dirname($_SERVER['SCRIPT_NAME']); |
||
10 | |||
11 | ?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
||
12 | "http://www.w3.org/TR/html4/loose.dtd"> |
||
13 | |||
14 | <html> |
||
15 | |||
16 | <head> |
||
17 | <title>Index für <?php echo $path; ?></title> |
||
18 | </head> |
||
19 | |||
20 | <body> |
||
21 | |||
22 | <h1>Index für <?php echo $path; ?></h1> |
||
23 | |||
24 | <hr> |
||
25 | |||
26 | <br><table border="1" width="100%"> |
||
27 | <tr> |
||
28 | <td><b>Dateiname</b></td> |
||
29 | <td><b>Hochgeladen / Aktualisiert</b> (Sort)</td> |
||
30 | <td align="right"><b>Dateigröße</b></td> |
||
31 | <td align="right"><b>MD5-Hash</b></td> |
||
32 | </tr><?php |
||
33 | |||
34 | $outarray = array(); |
||
35 | $sizesum = 0; |
||
36 | $filesum = 0; |
||
37 | $hash_calculator = new DirectoryHashCalculator(); |
||
38 | dir_rekursiv('', $outarray, $sizesum, $filesum, $hash_calculator); |
||
39 | ksort($outarray); |
||
40 | |||
41 | foreach ($outarray as $value) { |
||
42 | echo $value; |
||
43 | } |
||
44 | |||
45 | ?> |
||
46 | </table><br> |
||
47 | |||
48 | <?php |
||
49 | |||
50 | |||
51 | $filesum = number_format($filesum, 0, ',', '.'); |
||
52 | $sizesum = number_format($sizesum, 0, ',', '.'); |
||
53 | |||
54 | /* |
||
55 | |||
56 | Note: |
||
57 | In this solution, ".*" and "index.html" (this script) and |
||
58 | "DirectoryHashCalculator.class.php" (required by this script) |
||
59 | are not calculated in because dir_rekursiv() ignored them, |
||
60 | so the Directory-Hash-Result may differ from other applications which |
||
61 | implement it. |
||
62 | |||
63 | */ |
||
64 | |||
65 | $directory_hash = $hash_calculator->calculateDirectoryHash(); |
||
66 | $hash_alg = $hash_calculator->getVersionDescription(); |
||
67 | |||
68 | echo '<p><code>Berechnung abgeschlossen am '.date('Y-m-d H:i:s \G\M\TO').'<br>'; |
||
69 | echo "$filesum Dateien mit $sizesum Byte Größe.<br>"; |
||
70 | echo "Directory-Hash ($hash_alg): $directory_hash.</code></p>"; |
||
71 | echo '<hr>'; |
||
72 | echo '<p><i>Directory Listing Script Version '.VER.' © 2010 <a href="http://www.viathinksoft.de/">ViaThinkSoft</a>.</i></p>'; |
||
73 | |||
74 | ?> |
||
75 | |||
76 | </body> |
||
77 | |||
78 | </html><?php |
||
79 | |||
80 | // Ref: http://www.php.net/manual/de/function.urlencode.php#96256 |
||
81 | function encode_full_url($url) { |
||
82 | $url = urlencode($url); |
||
83 | $url = str_replace("%2F", "/", $url); |
||
84 | $url = str_replace("%3A", ":", $url); |
||
85 | $url = str_replace("+", "%20", $url); // Neu |
||
86 | return $url; |
||
87 | } |
||
88 | |||
89 | function dir_rekursiv($verzeichnis, &$outarray, &$sizesum, &$filesum, $hash_calculator) { |
||
90 | if ($verzeichnis == '') $verzeichnis = './'; |
||
91 | |||
92 | $handle = opendir($verzeichnis); |
||
93 | while ($datei = readdir($handle)) |
||
94 | { |
||
95 | if (($datei != '.') && ($datei != '..')) |
||
96 | { |
||
97 | $file = $verzeichnis.$datei; |
||
98 | if (is_dir($file)) // Wenn Verzeichniseintrag ein Verzeichnis ist |
||
99 | { |
||
100 | // Erneuter Funktionsaufruf, um das aktuelle Verzeichnis auszulesen |
||
101 | dir_rekursiv($file.'/', $outarray, $sizesum, $filesum, $hash_calculator); |
||
102 | } else { |
||
103 | // Wenn Verzeichnis-Eintrag eine Datei ist, diese ausgeben |
||
104 | |||
105 | if (substr($file, 0, 2) == './') { |
||
106 | $file = substr($file, 2, strlen($file)-2); // './' entfernen |
||
107 | } |
||
108 | |||
109 | if (($file != 'index.php') && |
||
110 | ($file != 'DirectoryHashCalculator.class.php') && |
||
111 | (substr($file, 0, 1) != '.')) { |
||
112 | $filesize = filesize($file); |
||
113 | $sizesum += $filesize; |
||
114 | $filesum++; |
||
115 | $sizeformat = number_format($filesize, 0, ',', '.'); |
||
116 | $file_md5 = $hash_calculator->addFile($file); |
||
117 | if ($file_md5 === false) $file_md5 = '<b>ERROR!</b>'; |
||
118 | $mtime = filemtime($file); |
||
119 | $date = date('Y-m-d H:i:s \G\M\TO', $mtime); |
||
120 | if (!isset($outarray[$mtime])) $outarray[$mtime] = ''; |
||
121 | $outarray[$mtime] .= '<tr> |
||
122 | <td><a href="'.encode_full_url($file).'" target="_blank">'.str_replace('/', ' / ', $file).'</a></td> |
||
123 | <td>'.$date.'</td> |
||
124 | <td align="right">'.$sizeformat.'</td> |
||
125 | <td align="right"><code>'.$file_md5.'</code></td> |
||
126 | </tr>'; |
||
127 | } |
||
128 | } |
||
129 | } |
||
130 | } |
||
131 | closedir($handle); |
||
132 | } |
||
133 | |||
134 | ?> |