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