README.md aktualisiert
This commit is contained in:
parent
47417ee692
commit
fea89942da
177
README.md
177
README.md
@ -2,8 +2,8 @@
|
||||
|
||||
## Kurzüberblick
|
||||
|
||||
Geizkragen ist eine webbasierte Anwendung zur Produktsuche, zum Preisvergleich und zur Verwaltung von Benutzerinteraktionen (z. B. Wunschliste, Konto).
|
||||
Die Anwendung basiert auf einer klassischen serverseitigen Architektur mit PHP und relationaler Datenbank.
|
||||
Geizkragen ist eine webbasierte Anwendung zur Produktsuche und zum Preisvergleich. Nutzer können Produkte durchsuchen, vergleichen und in einer persönlichen Wunschliste verwalten.
|
||||
Das Projekt dient als technische Demonstration einer klassischen PHP-basierten Webanwendung mit Datenbankanbindung.
|
||||
|
||||
---
|
||||
|
||||
@ -14,11 +14,11 @@ Die Anwendung basiert auf einer klassischen serverseitigen Architektur mit PHP u
|
||||
* Wunschliste (benutzergebunden)
|
||||
* Benutzerregistrierung und Login
|
||||
* Benutzerkonto-Verwaltung
|
||||
* Adminbereich zur Benutzerverwaltung
|
||||
* Administrationsbereich zur Benutzerverwaltung
|
||||
* Hinzufügen neuer Produkte
|
||||
* Produktdetailseiten
|
||||
* Statistikfunktionen (JSON-basiert)
|
||||
* Einfaches Empfehlungssystem
|
||||
* Einfache statistische Auswertungen
|
||||
* Grundlegendes Empfehlungssystem
|
||||
|
||||
---
|
||||
|
||||
@ -27,28 +27,28 @@ Die Anwendung basiert auf einer klassischen serverseitigen Architektur mit PHP u
|
||||
```bash
|
||||
geizkragen/
|
||||
│
|
||||
├── index.php # Startseite
|
||||
├── productpage.php # Produktdetails
|
||||
├── compare.php # Produktvergleich
|
||||
├── wunschliste.php # Wunschliste
|
||||
├── login.php # Login
|
||||
├── register.php # Registrierung
|
||||
├── account.php # Benutzerkonto
|
||||
├── admin_users.php # Admin-Panel
|
||||
├── index.php
|
||||
├── productpage.php
|
||||
├── compare.php
|
||||
├── wunschliste.php
|
||||
├── login.php
|
||||
├── register.php
|
||||
├── account.php
|
||||
├── admin_users.php
|
||||
│
|
||||
├── api/
|
||||
│ └── search_products.php # Produktsuche API
|
||||
│ └── search_products.php
|
||||
│
|
||||
├── assets/
|
||||
│ ├── css/ # Stylesheets
|
||||
│ ├── images/ # Bilder / DB-Design
|
||||
│ └── icons/ # Icons
|
||||
│ ├── css/
|
||||
│ ├── images/
|
||||
│ └── icons/
|
||||
│
|
||||
├── header.php # Header-Komponente
|
||||
├── footer.php # Footer-Komponente
|
||||
├── style.css # Globales Styling
|
||||
├── stats.json # Statistiken
|
||||
└── .htaccess # Serverkonfiguration
|
||||
├── header.php
|
||||
├── footer.php
|
||||
├── style.css
|
||||
├── stats.json
|
||||
└── .htaccess
|
||||
```
|
||||
|
||||
---
|
||||
@ -70,8 +70,8 @@ git clone <repository-url>
|
||||
cd geizkragen
|
||||
```
|
||||
|
||||
Alternativ:
|
||||
Projekt entpacken nach:
|
||||
Oder manuell:
|
||||
Projekt in das Webserver-Verzeichnis kopieren, z. B.:
|
||||
|
||||
```
|
||||
C:\xampp\htdocs\geizkragen
|
||||
@ -82,15 +82,14 @@ C:\xampp\htdocs\geizkragen
|
||||
### Datenbankeinrichtung
|
||||
|
||||
1. Neue Datenbank erstellen
|
||||
2. Tabellen entsprechend dem vorhandenen Schema anlegen
|
||||
2. Tabellen entsprechend dem Schema anlegen
|
||||
3. Zugangsdaten in den PHP-Dateien konfigurieren
|
||||
|
||||
---
|
||||
|
||||
### Start
|
||||
|
||||
* Webserver starten (z. B. Apache über XAMPP)
|
||||
* Anwendung aufrufen:
|
||||
Webserver starten und im Browser öffnen:
|
||||
|
||||
```
|
||||
http://localhost/geizkragen
|
||||
@ -108,7 +107,7 @@ GET /api/search_products.php?q=Suchbegriff
|
||||
|
||||
Antwort:
|
||||
|
||||
* JSON-Format mit passenden Produkten
|
||||
* JSON mit passenden Produkten
|
||||
|
||||
---
|
||||
|
||||
@ -116,56 +115,59 @@ Antwort:
|
||||
|
||||
### Backend
|
||||
|
||||
* PHP (serverseitige Verarbeitung)
|
||||
* Teilweise REST-ähnliche API-Struktur
|
||||
* PHP
|
||||
* Serverseitige Verarbeitung
|
||||
* Teilweise API-Struktur
|
||||
|
||||
### Frontend
|
||||
|
||||
* HTML5
|
||||
* CSS
|
||||
* Serverseitiges Rendering (kein SPA)
|
||||
* Klassisches serverseitiges Rendering
|
||||
|
||||
### Datenhaltung
|
||||
|
||||
* Relationale Datenbank (MySQL/MariaDB)
|
||||
* Ergänzend JSON-Dateien (z. B. Statistiken)
|
||||
* MySQL / MariaDB
|
||||
* Ergänzend JSON (Statistiken)
|
||||
|
||||
---
|
||||
|
||||
## Zentrale Module
|
||||
## Sicherheit und Hinweis zur öffentlichen Nutzung
|
||||
|
||||
| Modul | Funktion |
|
||||
| --------------------- | -------------------------- |
|
||||
| compare.php | Vergleich von Produkten |
|
||||
| productAdder.php | Hinzufügen neuer Produkte |
|
||||
| wunschliste.php | Verwaltung der Wunschliste |
|
||||
| admin_users.php | Benutzerverwaltung |
|
||||
| ad_recommendation.php | Empfehlungssystem |
|
||||
Dieses Repository ist öffentlich zugänglich.
|
||||
Der aktuelle Stand ist als Lern- bzw. Entwicklungsprojekt zu verstehen und **nicht für den produktiven Einsatz im Internet vorgesehen**.
|
||||
|
||||
Bekannte Einschränkungen:
|
||||
|
||||
* Sicherheitsmechanismen sind nicht vollständig implementiert
|
||||
* Authentifizierung und Session-Handling sollten überprüft werden
|
||||
* Eingabevalidierung und Schutz gegen SQL-Injection sind teilweise unzureichend
|
||||
* Keine Garantie für Datenschutz oder Datensicherheit
|
||||
|
||||
**Empfehlung:**
|
||||
Vor einem produktiven Einsatz müssen grundlegende Sicherheitsmaßnahmen implementiert werden.
|
||||
|
||||
---
|
||||
|
||||
## Sicherheit (Bewertung und Empfehlungen)
|
||||
|
||||
Aktueller Stand deutet auf grundlegende Implementierung hin, jedoch mit Verbesserungspotenzial.
|
||||
|
||||
Empfohlene Maßnahmen:
|
||||
## Empfohlene Sicherheitsmaßnahmen
|
||||
|
||||
* Verwendung von Prepared Statements (PDO/MySQLi)
|
||||
* Passwort-Hashing mit `password_hash()` und `password_verify()`
|
||||
* Validierung und Sanitizing sämtlicher Eingaben
|
||||
* CSRF-Schutz bei Formularen
|
||||
* Session-Härtung (z. B. Regeneration von Session-IDs)
|
||||
* Passwort-Hashing mit `password_hash()`
|
||||
* CSRF-Schutz für Formulare
|
||||
* Strikte Validierung und Sanitizing aller Eingaben
|
||||
* Sichere Session-Verwaltung (Session-Regeneration)
|
||||
* Fehlerausgaben im Produktivbetrieb deaktivieren
|
||||
|
||||
---
|
||||
|
||||
## Erweiterungsmöglichkeiten
|
||||
|
||||
* Einführung eines MVC-Patterns zur besseren Trennung von Logik und Darstellung
|
||||
* Ausbau der API zu einer vollständigen REST-Schnittstelle
|
||||
* Integration eines modernen Frontends (z. B. Vue oder React)
|
||||
* Verbesserung der UI/UX (Responsive Design)
|
||||
* Automatisierte Tests (Unit/Integration)
|
||||
* Erweiterung des Empfehlungssystems (z. B. Scoring oder ML-basierte Ansätze)
|
||||
* Einführung eines MVC-Patterns
|
||||
* Trennung von Backend und Frontend (API-first)
|
||||
* Nutzung eines modernen Frontend-Frameworks
|
||||
* Verbesserung der Benutzeroberfläche (Responsive Design)
|
||||
* Erweiterung des Empfehlungssystems
|
||||
* Automatisierte Tests
|
||||
|
||||
---
|
||||
|
||||
@ -173,36 +175,40 @@ Empfohlene Maßnahmen:
|
||||
|
||||
Empfohlen:
|
||||
|
||||
* IDE: PhpStorm oder Visual Studio Code
|
||||
* Datenbank-Tools: MySQL Workbench
|
||||
* Lokaler Server: XAMPP oder vergleichbar
|
||||
* PhpStorm oder Visual Studio Code
|
||||
* MySQL Workbench
|
||||
* XAMPP oder vergleichbare lokale Serverumgebung
|
||||
|
||||
---
|
||||
|
||||
## Lizenz
|
||||
|
||||
Derzeit ist keine Lizenz definiert.
|
||||
Empfehlung: Verwendung einer MIT-Lizenz oder vergleichbarer Open-Source-Lizenz.
|
||||
Ohne Lizenz ist die Nutzung, Veränderung und Weitergabe rechtlich eingeschränkt.
|
||||
|
||||
Empfehlung:
|
||||
Eine Open-Source-Lizenz wie MIT oder Apache 2.0 hinzufügen.
|
||||
|
||||
---
|
||||
|
||||
## Autor
|
||||
|
||||
Fabian Schieder
|
||||
Paul Eisenbock
|
||||
|
||||
---
|
||||
|
||||
## Fachliche Einschätzung
|
||||
|
||||
Das Projekt stellt eine solide Grundlage für eine klassische datenbankgestützte Webanwendung dar.
|
||||
Architektonisch handelt es sich um eine typische serverseitig gerenderte PHP-Anwendung ohne klare Trennung der Schichten.
|
||||
Das Projekt ist ein solides Beispiel für eine klassische PHP-Webanwendung mit Datenbankanbindung.
|
||||
Für Lernzwecke ist die Struktur sinnvoll, jedoch fehlen klare architektonische Trennungen und sicherheitsrelevante Mechanismen.
|
||||
|
||||
Aus technischer Sicht sind folgende Punkte besonders relevant für die Weiterentwicklung:
|
||||
Für eine Weiterentwicklung sind insbesondere folgende Punkte entscheidend:
|
||||
|
||||
* Entkopplung von Präsentation und Logik (z. B. MVC)
|
||||
* Verbesserung der Sicherheit (insbesondere Datenbankzugriffe und Authentifizierung)
|
||||
* Modularisierung und Wartbarkeit des Codes
|
||||
* Optional: Übergang zu API-first-Architektur
|
||||
* Strukturierung (MVC oder ähnliche Muster)
|
||||
* Absicherung der Datenbankzugriffe
|
||||
* Saubere Trennung von Logik und Darstellung
|
||||
* Skalierbarkeit durch API-basierte Architektur
|
||||
|
||||
---
|
||||
|
||||
@ -210,36 +216,35 @@ Aus technischer Sicht sind folgende Punkte besonders relevant für die Weiterent
|
||||
|
||||
### Häufige Probleme
|
||||
|
||||
* Unsichere SQL-Queries (SQL-Injection)
|
||||
* Fehlendes oder falsches Passwort-Hashing
|
||||
* Vermischung von HTML und PHP (erschwerte Wartung)
|
||||
* Fehlende Eingabevalidierung
|
||||
* SQL-Injection durch direkte Queries
|
||||
* Fehlendes Passwort-Hashing
|
||||
* Vermischung von PHP und HTML
|
||||
* Unsichere Session-Verwaltung
|
||||
* Fehlende Eingabevalidierung
|
||||
|
||||
### Best Practices
|
||||
|
||||
* Prepared Statements konsequent einsetzen
|
||||
* Trennung von Logik und Darstellung
|
||||
* Verwendung von zentralen Konfigurationsdateien
|
||||
* Strukturierte Fehlerbehandlung
|
||||
* Logging implementieren
|
||||
* Prepared Statements konsequent verwenden
|
||||
* Zentrale Konfigurationsdateien nutzen
|
||||
* Logging und Fehlerhandling implementieren
|
||||
* Code modularisieren
|
||||
* Sicherheitskonzepte früh integrieren
|
||||
|
||||
---
|
||||
|
||||
## Typischer Ablauf (Use Case)
|
||||
## Typischer Ablauf
|
||||
|
||||
1. Benutzer sucht ein Produkt (API-Aufruf)
|
||||
2. Anzeige der Ergebnisse auf der Startseite
|
||||
3. Auswahl eines Produkts (Detailseite)
|
||||
4. Optionaler Vergleich mit anderen Produkten
|
||||
5. Speicherung in der Wunschliste
|
||||
1. Benutzer sucht ein Produkt
|
||||
2. Ergebnisse werden angezeigt
|
||||
3. Produktdetailseite wird geöffnet
|
||||
4. Optional: Vergleich oder Speicherung in Wunschliste
|
||||
|
||||
---
|
||||
|
||||
## Zusammenfassung
|
||||
|
||||
* PHP-basierte Webanwendung für Produktsuche und Preisvergleich
|
||||
* PHP-basierte Preisvergleichsplattform
|
||||
* Klassische serverseitige Architektur
|
||||
* Enthält Benutzerverwaltung, Vergleich und API
|
||||
* Erweiterbar in Richtung moderne Webarchitektur
|
||||
* Sicherheit und Struktur sollten verbessert werden
|
||||
* Öffentliche Repository mit Lerncharakter
|
||||
* Sicherheit derzeit nicht ausreichend für Produktion
|
||||
* Gute Basis für Erweiterung und Refactoring
|
||||
|
||||
Loading…
Reference in New Issue
Block a user