76 lines
2.4 KiB
Markdown
76 lines
2.4 KiB
Markdown
# Habit Tracker
|
|
|
|
Habit Tracker ist eine PHP-Webanwendung, mit der Benutzer eigene Gewohnheiten anlegen, bearbeiten, filtern und taeglich abhaken koennen.
|
|
|
|
## Funktionen
|
|
|
|
- Registrierung und Login mit Passwort-Hashing
|
|
- Geschuetzter Benutzerbereich per Session
|
|
- Habits erstellen, bearbeiten, loeschen und fuer heute abhaken
|
|
- Kategorien und Statusfilter im Dashboard
|
|
- Tagesprotokoll ueber `habit_logs`
|
|
- Responsive Oberflaeche fuer Desktop und Smartphone
|
|
- Serverseitige Validierung und klare Fehlermeldungen
|
|
- Schutz gegen SQL-Injection durch PDO Prepared Statements
|
|
- Schutz gegen XSS durch escaped HTML-Ausgabe
|
|
- CSRF-Schutz fuer schreibende Formulare
|
|
|
|
## Technik
|
|
|
|
- PHP
|
|
- HTML/CSS
|
|
- SQL
|
|
- MySQL/PDO
|
|
- MVC-Struktur
|
|
|
|
## MVC-Struktur
|
|
|
|
- `public/index.php`: Einstiegspunkt und Routing
|
|
- `app/Controllers/`: verarbeitet Anfragen und steuert den Ablauf
|
|
- `app/Models/`: kapselt Datenbankzugriffe
|
|
- `app/Views/`: erzeugt die HTML-Ausgabe
|
|
- `app/Core/`: gemeinsame Kernklassen fuer Datenbank und Views
|
|
- `app/helpers.php`: Hilfsfunktionen fuer Escaping, Sessions, Flash-Meldungen und CSRF
|
|
- `database/schema.sql`: Datenbankstruktur mit Startdaten
|
|
|
|
## Datenbank
|
|
|
|
Die Datenbank besteht aus 5 Tabellen:
|
|
|
|
- `users`: Benutzerkonten
|
|
- `categories`: Habit-Kategorien
|
|
- `habits`: Gewohnheiten der Benutzer
|
|
- `habit_logs`: taegliche Erledigungen
|
|
- `reminders`: vorbereitete Erinnerungen pro Habit
|
|
|
|
## Sicherheit
|
|
|
|
- Passwoerter werden mit `password_hash()` gespeichert.
|
|
- Login prueft Passwoerter mit `password_verify()`.
|
|
- SQL-Abfragen nutzen vorbereitete PDO-Statements.
|
|
- Ausgaben werden mit `htmlspecialchars()` escaped.
|
|
- Schreibende Formulare nutzen CSRF-Tokens.
|
|
- Nach erfolgreichem Login wird die Session-ID erneuert.
|
|
- Die echte `config/config.php` wird nicht mit Git hochgeladen.
|
|
|
|
## Einrichtung
|
|
|
|
1. `database/schema.sql` in phpMyAdmin importieren.
|
|
2. `config/config.example.php` zu `config/config.php` kopieren.
|
|
3. Datenbankdaten in `config/config.php` eintragen.
|
|
4. Projekt ueber `public/index.php` starten.
|
|
|
|
## Testablauf
|
|
|
|
1. Benutzer registrieren.
|
|
2. Einloggen.
|
|
3. Habit mit Kategorie und Wochenziel erstellen.
|
|
4. Habit im Dashboard filtern.
|
|
5. Habit fuer heute abhaken.
|
|
6. Habit bearbeiten und loeschen.
|
|
7. Seite auf Smartphone-Breite pruefen.
|
|
|
|
## Bewertungsbezug
|
|
|
|
Das Projekt zeigt eine klare MVC-Aufteilung, Datenbankarbeit mit mehreren verknuepften Tabellen, serverseitige Validierung, Sicherheitsmassnahmen gegen XSS, SQL-Injection und CSRF sowie eine responsive Benutzeroberflaeche.
|