| .idea | ||
| api | ||
| assets | ||
| info | ||
| lib | ||
| other | ||
| .gitignore | ||
| .htaccess | ||
| .htpasswd | ||
| 404.php | ||
| account.php | ||
| ad_recommendation.php | ||
| admin_users.php | ||
| attrbar.php | ||
| catbar.php | ||
| compare.php | ||
| compcards.php | ||
| file.php | ||
| footer.php | ||
| header.php | ||
| impressum.php | ||
| index.php | ||
| login.php | ||
| logout.php | ||
| productAdder.php | ||
| productpage.php | ||
| README.md | ||
| register.php | ||
| stats.json | ||
| style.css | ||
| upload.php | ||
| wunschliste.php | ||
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
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
git clone <repository-url>
cd geizkragen
Alternativ: Projekt entpacken nach:
C:\xampp\htdocs\geizkragen
Datenbankeinrichtung
- Neue Datenbank erstellen
- Tabellen entsprechend dem vorhandenen Schema anlegen
- 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()undpassword_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)
- Benutzer sucht ein Produkt (API-Aufruf)
- Anzeige der Ergebnisse auf der Startseite
- Auswahl eines Produkts (Detailseite)
- Optionaler Vergleich mit anderen Produkten
- 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