Geizkragen/README.md

5.7 KiB
Raw Blame History

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

  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