README.md aktualisiert
This commit is contained in:
parent
028468c6fe
commit
47417ee692
245
README.md
245
README.md
@ -0,0 +1,245 @@
|
|||||||
|
# Geizkragen – Preisvergleichs- und Produktplattform
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Funktionsumfang
|
||||||
|
|
||||||
|
* Produktsuche (inkl. API-Endpunkt)
|
||||||
|
* Vergleich mehrerer Produkte
|
||||||
|
* Wunschliste (benutzergebunden)
|
||||||
|
* Benutzerregistrierung und Login
|
||||||
|
* Benutzerkonto-Verwaltung
|
||||||
|
* Adminbereich zur Benutzerverwaltung
|
||||||
|
* Hinzufügen neuer Produkte
|
||||||
|
* Produktdetailseiten
|
||||||
|
* Statistikfunktionen (JSON-basiert)
|
||||||
|
* Einfaches Empfehlungssystem
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Projektstruktur
|
||||||
|
|
||||||
|
```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
|
||||||
|
│
|
||||||
|
├── api/
|
||||||
|
│ └── search_products.php # Produktsuche API
|
||||||
|
│
|
||||||
|
├── assets/
|
||||||
|
│ ├── css/ # Stylesheets
|
||||||
|
│ ├── images/ # Bilder / DB-Design
|
||||||
|
│ └── icons/ # Icons
|
||||||
|
│
|
||||||
|
├── header.php # Header-Komponente
|
||||||
|
├── footer.php # Footer-Komponente
|
||||||
|
├── style.css # Globales Styling
|
||||||
|
├── stats.json # Statistiken
|
||||||
|
└── .htaccess # Serverkonfiguration
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Installation und Setup
|
||||||
|
|
||||||
|
### Voraussetzungen
|
||||||
|
|
||||||
|
* Webserver (z. B. Apache)
|
||||||
|
* PHP (empfohlen ≥ 7.x)
|
||||||
|
* MySQL oder MariaDB
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone <repository-url>
|
||||||
|
cd geizkragen
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternativ:
|
||||||
|
Projekt entpacken nach:
|
||||||
|
|
||||||
|
```
|
||||||
|
C:\xampp\htdocs\geizkragen
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Datenbankeinrichtung
|
||||||
|
|
||||||
|
1. Neue Datenbank erstellen
|
||||||
|
2. Tabellen entsprechend dem vorhandenen Schema anlegen
|
||||||
|
3. Zugangsdaten in den PHP-Dateien konfigurieren
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Start
|
||||||
|
|
||||||
|
* Webserver starten (z. B. Apache über XAMPP)
|
||||||
|
* Anwendung aufrufen:
|
||||||
|
|
||||||
|
```
|
||||||
|
http://localhost/geizkragen
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
### Produktsuche
|
||||||
|
|
||||||
|
```
|
||||||
|
GET /api/search_products.php?q=Suchbegriff
|
||||||
|
```
|
||||||
|
|
||||||
|
Antwort:
|
||||||
|
|
||||||
|
* JSON-Format mit passenden Produkten
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Technische Architektur
|
||||||
|
|
||||||
|
### Backend
|
||||||
|
|
||||||
|
* PHP (serverseitige Verarbeitung)
|
||||||
|
* Teilweise REST-ähnliche API-Struktur
|
||||||
|
|
||||||
|
### Frontend
|
||||||
|
|
||||||
|
* HTML5
|
||||||
|
* CSS
|
||||||
|
* Serverseitiges Rendering (kein SPA)
|
||||||
|
|
||||||
|
### Datenhaltung
|
||||||
|
|
||||||
|
* Relationale Datenbank (MySQL/MariaDB)
|
||||||
|
* Ergänzend JSON-Dateien (z. B. Statistiken)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Zentrale Module
|
||||||
|
|
||||||
|
| 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 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Sicherheit (Bewertung und Empfehlungen)
|
||||||
|
|
||||||
|
Aktueller Stand deutet auf grundlegende Implementierung hin, jedoch mit Verbesserungspotenzial.
|
||||||
|
|
||||||
|
Empfohlene Maß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)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 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)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Entwicklungsumgebung
|
||||||
|
|
||||||
|
Empfohlen:
|
||||||
|
|
||||||
|
* IDE: PhpStorm oder Visual Studio Code
|
||||||
|
* Datenbank-Tools: MySQL Workbench
|
||||||
|
* Lokaler Server: XAMPP oder vergleichbar
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Lizenz
|
||||||
|
|
||||||
|
Derzeit ist keine Lizenz definiert.
|
||||||
|
Empfehlung: Verwendung einer MIT-Lizenz oder vergleichbarer Open-Source-Lizenz.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Autor
|
||||||
|
|
||||||
|
Fabian Schieder
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
Aus technischer Sicht sind folgende Punkte besonders relevant für die Weiterentwicklung:
|
||||||
|
|
||||||
|
* 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
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Typische Fehlerquellen und Best Practices
|
||||||
|
|
||||||
|
### Häufige Probleme
|
||||||
|
|
||||||
|
* Unsichere SQL-Queries (SQL-Injection)
|
||||||
|
* Fehlendes oder falsches Passwort-Hashing
|
||||||
|
* Vermischung von HTML und PHP (erschwerte Wartung)
|
||||||
|
* Fehlende Eingabevalidierung
|
||||||
|
* Unsichere Session-Verwaltung
|
||||||
|
|
||||||
|
### Best Practices
|
||||||
|
|
||||||
|
* Prepared Statements konsequent einsetzen
|
||||||
|
* Trennung von Logik und Darstellung
|
||||||
|
* Verwendung von zentralen Konfigurationsdateien
|
||||||
|
* Strukturierte Fehlerbehandlung
|
||||||
|
* Logging implementieren
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Typischer Ablauf (Use Case)
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Zusammenfassung
|
||||||
|
|
||||||
|
* PHP-basierte Webanwendung für Produktsuche und Preisvergleich
|
||||||
|
* Klassische serverseitige Architektur
|
||||||
|
* Enthält Benutzerverwaltung, Vergleich und API
|
||||||
|
* Erweiterbar in Richtung moderne Webarchitektur
|
||||||
|
* Sicherheit und Struktur sollten verbessert werden
|
||||||
Loading…
Reference in New Issue
Block a user