Webanwendung zur Verwaltung von Seminaren, Terminen und Teilnehmern. Ein öffentlicher Angebotsbereich, persönliche Benutzerfunktionen und ein eigener Administrationsbereich greifen auf ein relationales Datenmodell mit MySQL beziehungsweise MariaDB zu.
Entwickelt von Martin Frackowiak als Klausurprojekt im Modul PHPB im Rahmen der Qualifizierung zum Fachinformatiker für Anwendungsentwicklung.
- Seminar- und Terminübersicht mit Suche und Detailansichten
- Registrierung, Anmeldung und Bearbeitung des eigenen Profils
- Anmeldung zu konkreten Seminarterminen, Stornierung und Übersicht der eigenen Buchungen
- Prüfung auf freie Plätze und zeitliche Buchungskonflikte
- Kontaktanfragen mit Antworten aus der Administration
- Verwaltung von Fachbereichen, Seminaren, Terminen, Standorten und Räumen
- Teilnehmerlisten, Belegungsübersichten und Statistiken
- SQL-Import, CSV-Testdaten und zusätzliche PHP-Serialisierung von Benutzer- und Seminardaten
Die Anwendung trennt ein wiederkehrendes Seminarangebot von seinen konkreten Terminen. Die Zuordnung von Benutzern zu Terminen speichert unter anderem Anmeldestatus und Buchungskosten. Länder, Orte, Postleitzahlen und Adressen sind über eigene Tabellen miteinander verknüpft.
Modellklassen kapseln Datenbankzugriffe über PDO. Eine abstrakte Basisklasse, ein Interface, Traits und Namespaces strukturieren den PHP-Code. Templates und eine zentrale Auswahl erlaubter Aktionen setzen die Seiten zusammen.
Technologien: PHP, MySQL/MariaDB, PDO, HTML5, CSS3 und JavaScript. Es werden keine PHP- oder JavaScript-Frameworks eingesetzt.
Vorhandene Schutzmaßnahmen: Passwort-Hashing, vorbereitete SQL-Anweisungen, Rollenprüfungen, CSRF-Tokens für Formularaktionen und HTML-Escaping.
- Apache, beispielsweise über XAMPP
- PHP 8.1 oder neuer mit
pdo_mysqlundmbstring - MySQL oder MariaDB mit Unterstützung für
LOAD DATA LOCAL INFILE php.exeundmysql.exeim SuchpfadPATH, wenn die mitgelieferte BAT-Datei verwendet wird
-
Den Projektordner
edvschuleunter das DocumentRoot der lokalen Apache-Installation legen oder einen lokalen VirtualHost auf diesen Ordner richten. Ein Beispiel für Standard-XAMPP istC:\xampp\htdocs\edvschule. -
Apache und MySQL beziehungsweise MariaDB starten.
-
Die mitgelieferte Standardkonfiguration verwendet
localhost, den MySQL-Benutzerroot, ein leeres Datenbankpasswort und die Datenbankedvschule6. Diese Werte stehen inclasses/Kern/ADatenbank.phpunddaten/skripte/_serialisierte_daten_erstellen.php. Der BAT-Import verwendet ebenfallsrootohne Passwort. Bei einer abweichenden lokalen Umgebung müssen diese Stellen übereinstimmen. -
Für eine neue Testinstallation PowerShell im Projektordner öffnen und den Import starten:
Datenverlust bei erneutem Import:
001_tabellen_erstellen.sqlenthältDROP TABLE-Anweisungen. Der Gesamtimport löscht die vorhandenen Anwendungstabellen inedvschule6, erstellt sie neu und lädt die Testdaten. Eine bestehende Installation zum bloßen Starten direkt im Browser öffnen.cd .\daten\skripte .\_import_und_serialisiert_alles.bat -
Bei der oben gezeigten Standard-XAMPP-Installation das Frontend unter
http://localhost/edvschule/und das Backend unterhttp://localhost/edvschule/admin/öffnen. Bei einem eigenen VirtualHost oder Port dessen lokale Adresse verwenden.
Der Projektordner heißt edvschule; Datenbankname und PHP-Namespace bleiben edvschule6 beziehungsweise Edvschule6. includes/config.php enthält den angezeigten Projektnamen und gehört zum Repository.
| Rolle | Login | Passwort |
|---|---|---|
| Administrator | admin |
admin |
| Teilnehmer | user1 |
123 |
| Teilnehmer | user2 |
123 |
Die Angaben stammen aus den mitgelieferten Testdaten und der ursprünglichen Projektdokumentation. Die Passwörter sind ausschließlich für die lokale Demonstration vorgesehen.
Der Datenbestand enthält 112 Benutzer einschließlich Administrator, 32 Seminare, 119 Termine, 929 Buchungen, fünf Standorte und 51 Räume. Die Termine liegen im Jahr 2027. Die CSV-Testdaten basieren auf Kursmaterial und wurden an dieses Datenmodell angepasst.
Der Gesamtimport erzeugt anschließend daten/serialisiert/benutzer.txt und daten/serialisiert/seminare.txt. Diese Laufzeitdateien sind durch .gitignore ausgeschlossen. Die zugehörige index.php, die CSV-Importdaten und die SQL-Skripte bleiben Bestandteil des Repositories.
Nach der Anmeldung als Administrator ist die Projektdokumentation im Backend über Dokumentation erreichbar. Sie erläutert die Anforderungen in eigenen Worten sowie Datenmodell, Klassenaufbau, Umsetzung und Erfahrungen.
Bearbeitbare Diagramme liegen unter dokumentation/uml_datenbank.dia und dokumentation/uml-klassen.dia. Ihre WEBP-Abbildungen und die Anwendungsscreenshots liegen unter bilder/dokumentation/.
| Verzeichnis | Inhalt |
|---|---|
admin/ |
Einstieg und Seitenaufrufe der Administration |
classes/ |
Kernklassen, Modelle und Traits |
templates/ |
Layout, Formulare und Inhaltsansichten |
includes/ |
Autoloading, Projekttitel, Hilfs- und Sicherheitsfunktionen |
daten/csv/ |
Daten für die lokale Testinstallation |
daten/skripte/ |
Schema, Import, Datenprüfungen und Serialisierung |
daten/serialisiert/ |
Lokal erzeugte zusätzliche Datenformate |
dokumentation/ |
Datenmodell und bearbeitbare Dia-Diagramme |
bilder/ |
Projektgrafiken und Dokumentationsabbildungen |
css/, js/ |
Darstellung und ergänzende Bedienfunktionen |
Das Projekt dient lokalen Lern- und Demonstrationszwecken. Es ist nicht für einen öffentlichen Produktivbetrieb abgesichert. Unter anderem wird nach dem Login die Session-ID nicht erneuert; außerdem verhindern die Schutzdateien keine direkten Abrufe bekannter Pfade zu CSV-Dateien oder erzeugten Serialisierungen. Die veröffentlichten Testzugänge dürfen nicht für einen produktiven Betrieb verwendet werden.
Eine fachliche Einschränkung betrifft den Anmeldeschluss: Er wird gespeichert und angezeigt, beim Absenden einer Buchung aber noch nicht gegen das aktuelle Datum geprüft. Die Freigabe der Buchung richtet sich derzeit nach Terminstatus, Belegung und vorhandenen Buchungen.
Dieses Repository enthält keine Open-Source-Lizenz. Die Bereitstellung als Portfolio-Projekt erteilt keine allgemeine Nutzungslizenz für enthaltene Projektbestandteile oder Kursmaterialien.


