Übungsblatt 3: Schleifenanweisungen und Datei-Upload

Aufgabe 1: Taschenrechner II

Erweitern Sie ihren HTML-PHP-Taschenrechner aus dem letzten Übungsblatt um die folgenden Funktionen.

Version 1: Fakultät

Übergeben wird eine Zahl n im Operandenfeld 1. Die Fakultät liefert im Ausgabefenster das Produkt der natürlichen Zahlen 1..n. Berechnen Sie die Fakultät mit Hilfe einer for-Schleife.

Abb.1: Ausgabe des Taschenrechners zur Fakultät

Version 2: Größter gemeinsamer Teiler (GGT)

Der Algorithmus zur Berechnung des GGT zweier natürlicher Zahlen M und N lässt sich mittels des folgenden Flussdiagramms verdeutlichen (siehe Abbildung 2). Kern des Verfahrens ist es, solange von der momentan größeren Zahl, der beiden Zahlen x und y, die kleinere Zahl zu subtrahieren, bis diese schließlich gleich sind.

Abb.2: Flussdiagramm GGT

Implementieren Sie das Verfahren mit Hilfe einer while-Schleife und legen Sie die Operation wieder auf einen entsprechenden Radio Button. Die Operanden M und N werden in den Operandenfeldern 1 und 2 übergeben (Abbildung 3).

Abb.3: Ausgabe des Taschenrechners zum GGT

Aufgabe 2: Dateiupload

PHP unterstützt Dateiuploads nach der POST-Methode. Wie in der Vorlesung erläutert, werden beim POST die Daten nicht wie beim GET mit Hilfe eines Querystrings gesendet, sondern verdeckt im Hintergrund. Dabei können beliebige Dateien versendet werden, um z. B. Emails mit Anhängen zu versehen oder ganz allgemein Webauftritte mit der Möglichkeit auszustatten, Dateien vom Benutzer entgegenzunehmen.

Abb.4: HTML-Oberfläche für den Dateiupload

Konstruieren Sie mit CSS eine GUI bestehend aus:

Die zu sendenden Dateien werden hier durch ein spezielles Formularelement ausgewählt. Lesen Sie hierzu den Abschnitt Felder für Datei-Upload definieren in SelfHTML.

Mit dem Bedienteil ist es möglich, maximal drei Dateien gleichzeitig zu übertragen. Dabei sollen nur für die Formularfelder, in denen Dateinamen eingegeben wurden, im Ausgabefeld Meldungen erscheinen.

Durch Abschicken des Formulars werden die Dateien in das temporäre Verzeichnis des PHP-Interpreters übertragen, sofern als Ziel eine PHP-Datei angegeben wurde. Das Verschieben der Dateien in ihr eigenes Webserververzeichnis muss nachfolgend mit Hilfe von Befehlen in dieser PHP-Datei durchgeführt werden. Lesen Sie hierzu den Abschnitt Dateiuploads mit POST im PHP Handbuch.

Für das Verschieben der Dateien ist es erforderlich, den Namen des Webverzeichnisses im PHP-Script zu bestimmen. Der Name ist wie folgt aufgebaut: DOCUMENT_ROOT/dmuser/dmuserx.

DOCUMENT_ROOT ist das HTML-Wurzelverzeichnis des Webservers. Unter Apache ist dies i. d. R. ein Verzeichnis mit dem Namen htdocs irgendwo im Verzeichnisbaum des Server-Rechners. Dies ist auch bei unserem Webserver der Fall. In diesem Verzeichnis befindet sich ein Unterverzeichnis dmuser. In diesem liegt ihr Webverzeichnis dmuserx, wobei x wie immer die Nummer ihres Accounts repräsentiert.

Das Verschieben der hochgeladenen Dateien auf dem Server führt in der zugehörenden PHP-Datei leicht zu Codeduplikation, wenn - wie in diesem Fall - mehrere Dateien zu verschieben ist. Vermeiden Sie diese Codeduplikation mit Hilfe einer Schleifenanweisung.