Seitenindex erstellen (1)
Was PHP angeht bin ich eine alte Jungfer. Zwar hab ich schon einen PHP-BOK-Kurs absolviert, aber da war ich mehr körperlich Anwesend (was bei meinem Aussehen durchaus eine Ehre für alle Anwesenden ist).
Doch seit dieser Woche besitze ich WebSpace und der soll nich leer rumliegen. Also habe ich beschlossen eine kleine Internetpräsenz aufzubauen. Wie genau die aussehen soll, weiß ich noch nicht. Aber PHP muss her. Immerhin is das ein guter Anreiz sich endlich mal mit dem ganzen Kram vertraut zu machen.
Da (aus sicherheitstechnischen Gründen) man sich den Index auf dem WebSpace nicht anzeigen lassen kann, aber direkte Pfadeingaben viel zu anstrengend sind, muss eine Indexansicht her.
Glücklicherweise hat der Simon sogar sowas schonmal programmiert. Also fix mal den Quellcode zeigen lassen und anhand dessen eine Indexanzeige geschrieben.
Damit alle etwas davon haben. Hier die einzelnen Teile des Programms:
1 2 | $dir = './'; $files = scandir( $dir ); |
Das Verzeichnis in dem sich die PHP-Datei befindet, wird durchsucht und alle gefundenen Daten werden in ein Array geschrieben. Beispiel:
Array ( [0] => . [1] => .. [2] => directory_1 [3] => index.php)
Zur Übersicht werden alle Dateien die sich in den Verzeichnissen befinden in einer Tabelle dargestellt:
3 | echo "<table border="0" cellspacing="0" cellpadding="0">"; |
Mit einer Schleife wird das Array durchlaufen.
4 | for( $i=0; $i<=count($files); $i++ ) |
Allerdings wollen wir nur die direkten Unterverzeichnisse des aktuellen Verzeichnisses durchsuchen. Daten aus dem aktuellen Verzeichnis sollen nicht angezeigt werden (wie z.B. unsere PHP-Datei, welche die Verzeichnisse durchsucht).
5 | if( $files[$i]!="." and $files[$i]!=".." and is_dir($files[$i])==true ) |
6 7 8 9 10 11 12 13 14 | $dir = opendir( "./".$files[$i]."/" ); while( $file = readdir($dir) ) { if( substr($file,-3)!="php" and is_dir($file)==false ) { //... } } closedir($dir); |
Mit diesem Abschnitt schließlich öffnen wir die gefundenen Verzeichnisse und suchen dort nach allen Dateien. PHP-Dateien und weitere Verzeichnisse werden nicht berücksichtigt.
Zwar haben wir schon eine Tabelle erstellen, aber damit wir zusätzliche Informationen, wie Größe, Dateityp und Erstellungsdatum sehen können, müssen wir ihm Bauch der IF-Abfrage einige Operationen durchführen.
Es werden zuerst das Erstellungsdatum (Zeile 15) und danach die Dateigröße (Zeile 16 + 17) ermittelt.
15 16 17 | $ftime = gmdate("d M Y H:i:s",filemtime("./$files[$i]/$file")); $fsize = filesize("./$files[$i]/$file"); $fsize = number_format($fsize,0,".","."); |
Damit man den Dateityp darstellen kann, muss man (leider, PHP stellt meines Wissens keine Funktion dafür bereit) einen kleinen Trick anwenden.
18 19 20 | $fil2 = explode(".", $file); $end = $fil2[count($fil2)-1]; if($end == $file ) { $end = "";} |
Zu guter Letzt schreiben wir alle Daten der Datei in die Tabellenfehler und geben diese aus.
21 22 23 24 25 26 27 28 29 | $output = "<tr> <td><a href='$files[$i]/$file'>$file</a> <td style='width:50pt'> <td align=right>$fsize Byte</td> <td width=\"40\" align =\"right\">$end</td> <td width=\"175\" align=\"right\">$ftime</td> </tr>"; echo $output; |
Dies (Zeile 15 - 29) wird für jedes Verzeichnis durchgeführt. Mit einem
30 | echo "</tbody></table>"; |
schließen wir die Tabelle wieder. Eine so erzeugte Tabelle könnte z. B. so aussehen:

Nicht sehr schön. Aber fürs Erste ausreichend. Verbesserungen kommen dann in späteren Einträgen. Wenn ihr Ideen habt, was eine Indexseite außer Suchen, alle Unterordner, usw. noch können muss, immer her mit den Vorschlägen!
So long,
Seb
Download Code
Subscribe by Email
Subscribe by Feed
Thursday, 3. July 2008 23:02
[...] nächste Schritt ist also den alten Code [...]
Saturday, 5. July 2008 0:25
[...] aber das Grundgerüst sehr gut war, habe ich diesen nun so modifiziert, dass er, wie schon der erste Versuch, eine Tabelle mit dem Seiten Index ausgibt. Diesmal werden aber alle Unterordner und auch das [...]