Netzprogrammierung (WS 2007/2008)  19538
Übungsblatt  5
Ausgabe 11.12.07
Abgabe 08.01.08 - 14°°

Aufgaben
 
    Implementieren Sie einen Webshop mit den unten angegebenen Funktionen. Die zu verwendene Sprache ist PHP und die Speicherung aller Daten erfolgt in einer XML-Datei. Bei dem Shop handelt es sich um einen Ostershop, es soll von Osterleckereien bis hin zur Osterdekoration diverses bestellt werden können. Der Shopname wird in der Browserleiste angezeigt.

  1. Generelle Anforderungen an die Implementierung:

    • Bauen Sie eine sinnvolle Fehlerbehandlung ein. Debug- und Fehlerausgaben sollen in Ihrer endgültigen Version nur noch in einer Logdatei gespeichert werden.
    • Eingaben sollen immer auf Korrektheit geprüft werden (z.B. bei Datumsangaben kein 44.13.2007)
    • Benutzen Sie eine SSL-Verbindung zur Übertragung sensibler Daten zum Server.
    • Der Webshop soll ansprechend aussehen, vernünftig strukturiert sein und mit verschiedenen Browser dargestellt werden können.
    • Die für den Shop erzeugten PHP-Skripte sollen sinnvoll formatiert (Stichwort Einrückungen) und kommentiert sein.

  2. Funktionsumfang des Shops für die Kunden:

    • Der Kunde kann anhand von Produktkategorien durch die angebotenen Produkte des Shops navigieren.
    • Der Kunde hat die Möglichkeit Produkte in einen Warenkorb zu legen.
    • Die Kundenverwaltung erfolgt über Sessions, die beim Aufruf der Seite vergeben werden. Es werden keine Kundendaten gespeichert.
    • Möchte ein Kunde die im Warenkorb befindlichen Artikel kaufen, gelangt er über einen Link "Bestellen" zu einer Seite, auf der er aufgefordert wird, nochmal seine Angaben zu überprüfen, gegebenenfalls die Anzahl der Artikel zu ändern bzw Posten ganz zu löschen. Bei einer Änderung der Daten ist der Preis zu aktualisieren. Danach wird der Kunde aufgefordert seine Kundendaten anzugeben. Zu diesen gehören der Name, die Lieferadresse, die Rechnungsadresse, sowie die Bezahlart. Als Zahlungsmöglichkeiten sollen Bankeinzug, Nachnahme und Kreditkartezahlung möglich sein, wobei im letzten Fall die Angabe des Kreditkarteninhabers, der Kreditkartennummer (besteht bei uns nur aus 5 Ziffern) und des Gültigkeitsdatums (Monat und Jahr) der Karte notwendig sind. Nachdem er seine Angaben bestätigt hat, wird ihm eine Auftragsbestätigung zugemailt, wobei eine Kopie per BCC an den Shopbetreiber geht.
    • Eine Session endet entweder durch Schließen des Browsers und Timeout, oder durch das Abschließen der Bestellung.

  3. Funktionsumfang des Shops für den Administrator/Shopbetreiber:

    • Es soll sichergestellt werden, dass der Admin-Bereich des Shops nicht durch normale Kunden benutzt werden kann. Dieser Login des Administrators erfolgt über eine gesicherte SSL-Verbindung.
    • Der Administrator kann den Shopnamen, den Betreiber, seine Email-Adresse usw. einstellen.
    • Die Verwaltung des Shops erfolgt über eine XML-Datei, in dieser werden alle Daten gespeichert (keine Kundendaten!). Schreiben Sie zu ihrer XML-Datei eine DTD.
    • Es soll die Möglichkeit bestehen, die XML-Datei auch Online zu bearbeiten. Es ist vorzusehen Produktkategorien anzulegen, zu löschen und zu ändern. Eine Produktkategorie besteht aus einem Namen und deren Inhalt, den Produkten. Für jedes Produkt gibt es einen Namen, ein Bild, eine Beschreibung sowie natürlich auch einen Preis. Zur Bearbeitung der XML-Datei ist es ausreichend, wenn der Inhalt in einem Textfeld angezeigt wird. Beim Speichern der geänderten Datei ist es erforderlich zu testen, ob es sich um eine korrekte XML-Datei handelt. Eine Behandlung aktiver Sessions ist vorzusehen, da sich das Warenangebot womöglich geändert hat.
    • Neben einem Bild gibt es für jedes Produkt eine Kurzbeschreibung, die für die Auflistung aller Produkte einer Kategorie benutzt wird. Weiterhin gibt es für jedes Produkt eine detaillierte Beschreibung, die angezeigt wird, wenn das Produkt ausgewählt wird.
    • Der Administrator hat die Möglichkeit, sich Bestellübersichten anzusehen. Dazu wird eine Tabelle angezeigt, in der für jeden Artikel die Bestellhäufigkeit angegeben wird.

  4. Zum 18.12. sind in schriftlicher Form ein Zeitplan und eine Arbeitsaufteilung für die Lösung der Aufgabe abzugeben, die auch ein oder mehrere UML-Diagramme enthalten (mindestens ein Klassendiagramm).
    Hilfe zum Einrichten der eigenen Homepage am Fachbereich: https://www.mi.fu-berlin.de/w/Tec/UserPages. Am Fachbereich läuft zur Zeit PHP4.3.11.
 

Zum Bestehen des Blattes ist es erforderlich, dass
    der Shop funktioniert.

Die Abgabe der Lösungen erfolgt auf zwei Wegen
  • Abgabe auf Papier:
Bitte schreiben Sie zur jeder Aufgabe eine Dokumentation, in der Sie anhand von *relevanten* Codefragmenten Ihre Implementierung erläutern. Die Codefragmente sollten möglichst kurz gehalten werden und nur der Orientierung für den Leser dienen; entscheidend sind Ihre Erläuterungen, was diese Fragmente machen und wieso Sie sich für diese Art der Implementierung entschieden haben. Erläutern Sie auch, welche Art der Fehlerbehandlung Sie vorgenommen haben, insbesondere bezüglich der Fehler, die erst bei verteilten Systemen auftreten. Die Dokumentation ist in den Fächern der Tutoren abzugeben. 
  • Abgabe per E-Mail:
Schicken Sie ein Archiv an Ihren Tutor, welches den vollständigen Quellcode enthält. Der Betreff der E-Mail sollte wie folgt anfangen:
"[ALP5] Gruppe X ....".

 
Diskussionsaufgaben, die nicht als Abgabe beantwortet werden sollen.Wir diskutieren sie in der Übung, Sie sollten sich im Rahmen dieser Aufgaben auf die Klausur vorbereiten.

Block Serverseitige Verarbeitung
  1. Was macht ein Server um ein CGI-Script auszuführen?
  2. Wie kommunizieren der Server und das Script?
  3. Wie unterscheidet ein Script, ob es Daten per GET oder per POST übermittelt bekommt?
  4. Nennen Sie zwei Unterschiede zwischen dem CGI- und dem Servlet Mechanismus
  5. Beschreiben Sie den SSI Mechanismus
  6. Beschreiben Sie den JSP Mechanismus
  7. Vergleichen Sie die CGI und JSP Mechanismen
  8. Was macht ein Server um ein CGI-Script auszuführen?
  9. Wie kommunizieren der Server und das Script?
  10. Wie unterscheidet ein Script, ob es Daten per GET oder per POST übermittelt bekommt?
  11. Nennen Sie zwei Unterschiede zwischen dem CGI- und dem Servlet Mechanismus
  12. Beschreiben Sie den SSI Mechanismus
  13. Beschreiben Sie die Funktionsweise von PHP
  14. Beschreiben Sie den JSP Mechanismus
  15. Vergleichen Sie die CGI, SSI, PHP, JSP und Servlets jeweils miteinander