Webtechnologien Sommersemester 2019

5. Aufgabe – MVC mit PHP – Die Sportvereinsspezialsonderausgabe

Abgabe 9. Januar Punkte 5 – 11

Einleitung

In Zusammenarbeit mit dem Kurs Datenbanken ist das Ziel dieser Aufgabe, eine Webanwendung zur Verwaltung des Sportvereins “Fit in Köpenick” zu entwickeln. Sie können dazu Ihre bisher entwickelte Datenbank nutzen.1

Damit die Anwendung wartbar bleibt, ist von Anfang an eine gute Code-Struktur wichtig. Dazu sollen Sie ein Framework verwenden, das sich am MVC-Architekturmuster orientiert.

Sie können sich hierzu der modifizierten Versions eines kleinen PHP-Projekts namens Simple-MVC-Framework bedienen. Eine Einführung und den Code finden Sie unter Simple-MVC.

Andernfalls können Sie auch populäre Frameworks wie Laravel 2 (Empfehlung), Code Igniter oder Phalcon verwenden. Die Lernkurve ist hier flacher (a.k.a. ordentlicher Einarbeitungsaufwand), die Möglichkeiten aber größer und auch schwierigere Aufgaben lassen sich später elegant und schnell lösen.

Abgabe

Pushen Sie Ihren Code samt SQL-Dump in Ihr Git-Repo und stellen Sie Ihre Lösung über Ihre VM bereit. Sollten Sie eine Datenbank des Studi-Servers verwenden, denken Sie daran, ihr Datenbankpasswort (das auch das Passwort Ihres F4-Accounts ist) nicht zu committen oder für MySQL ein anderes Passwort festzulegen.

Aufgabe

Folgende Features sollen entwickelt werden:

Kursverwaltung – 4 Punkte

Alle Kurse sollen auf einer eigenen Seite mit eigener URL angezeigt werden. Außerdem gibt es eine Übersichtsseite mit allen Kursen. Zudem soll es möglich sein, Kurse hinzuzufügen, zu ändern und zu löschen. (Öffentlich – eine Rechteverwaltung ist nicht nötig.)

Suchfunktion – 1 Punkt

Auf allen Seiten soll ein Eingabefeld vorhanden sein, über das Kurse gesucht werden können. Hierfür sollen schon Teile des Namens oder der Zielgruppe reichen (siehe MySQL: Übereinstimmende Suchmuster). Ergebnisse werden auf einer dedizierten Seite angezeigt, beispielsweise /courses/search/?q=suchbegriff.

Zusatzfeatures

Bis zu vier der folgenden Features können zusätzlich entwickelt werden und geben jeweils einen bis drei Punkte extra.

Mitgliederverwaltung – 3 Punkte

Besucher sollen sich einen passwortgeschützten Account anlegen und damit ein- und ausloggen können. Weitere Informationen finden Sie unter Authentifizierung mit PHP. Eingeloggte Mitglieder sehen ihre gebuchten Kurse und können weitere Kurse buchen. Auf der Seite jedes Kurses soll es einen “Buchen”-Button geben.

Hat sich ein Mitglied registriert, wird ihr Account nicht sofort freigeschaltet, sondern eine E-Mail an sie verschickt. In dieser ist ein spezieller Link, der besucht werden muss, um die E-Mail-Adresse zu verifizieren und die Registrierung abzuschließen. Erst danach ist es möglich, sich einzuloggen. (Ihre Datenbank enthält bereits die nötigen Felder token und is_activated.)

Profile – 1 Punkt

Mitglieder bekommen eine eigene Profil-Seite, auf der ihre gebuchten Kurse angezeigt und verlinkt werden. Zudem können Sie ihr Profil um folgende Informationen anreichern:

Verbot populärer Passwörter – 1 Punkt

30% der AnwenderInnen verwenden eines der 10.000 meistgenutzen Passwörter. Dadurch kann womöglich leicht in ein Nutzerkonto eingedrungen werden, weswegen Ihre Anwendung bei dem Versuch, eines der Passwörter zu setzen, verweigern und eine entsprechende Warnung anzeigen sollte. Die entsprechende Liste finden Sie auf GitHub.

Fachgebiete – 1 Punkt

Ihre Datenbank sieht vor, dass Kursen ein Fachgebiet zugeordnet ist. Erweitern Sie die CRUD-Funktionen der Kurse entsprechend. Zudem soll es auf der Kursübersichtsseite möglich sein, nach Fachgebieten zu filtern.

Adminfunktion – 1 Punkt

Das Anlegen, Bearbeiten und Löschen von Kursen soll nur nach vorheriger Authentifizierung als Admin-Nutzer möglich sein. Es kann ein fest kodiertes Passwort verwendet werden.

Kursstatus – 1 Punkt

Kurse sollen einen Starttermin bekommen. Dieser wird auf jeder Kursseite angezeigt und auch, ob ein Kurs zustande kommt (was bei mindestens 5 Buchungen der Fall ist) oder ausfällt (entsprechend bei weniger als 5). Nehmen mindestens 10 Mitglieder an einen Kurs teil, soll der “Buchen”-Button deaktiviert werden. Ist der Starttermin erreicht, erhalten alle TeilnehmerInnen die Zu- oder Absage per E-Mail.


  1. Aspekte wie “Trainer”, “Fachgebiete” und “Kinder” werden nicht weiter behandelt. Sie können die Tabelle entsprechend anpassen, müssen es aber nicht, da kurse.in_fachgebiet, kurse.geleitet_von und mitglieder.ist_kind_von jeweils NULL sein können. 

  2. Ein paar Anleitungen finden Sie unter Code Bright, Laracasts und scotch.io