Geizkragen/README.md

5.1 KiB
Raw Blame History

Geizkragen Preisvergleichs- und Produktplattform

Kurzüberblick

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.


Funktionsumfang

  • Produktsuche (inkl. API-Endpunkt)
  • Vergleich mehrerer Produkte
  • Wunschliste (benutzergebunden)
  • Benutzerregistrierung und Login
  • Benutzerkonto-Verwaltung
  • Administrationsbereich zur Benutzerverwaltung
  • Hinzufügen neuer Produkte
  • Produktdetailseiten
  • Einfache statistische Auswertungen
  • Grundlegendes Empfehlungssystem

Projektstruktur

geizkragen/
│
├── index.php
├── productpage.php
├── compare.php
├── wunschliste.php
├── login.php
├── register.php
├── account.php
├── admin_users.php
│
├── api/
│   └── search_products.php
│
├── assets/
│   ├── css/
│   ├── images/
│   └── icons/
│
├── header.php
├── footer.php
├── style.css
├── stats.json
└── .htaccess

Installation und Setup

Voraussetzungen

  • Webserver (z. B. Apache)
  • PHP (empfohlen ≥ 7.x)
  • MySQL oder MariaDB

Installation

git clone <repository-url>
cd geizkragen

Oder manuell: Projekt in das Webserver-Verzeichnis kopieren, z. B.:

C:\xampp\htdocs\geizkragen

Datenbankeinrichtung

  1. Neue Datenbank erstellen
  2. Tabellen entsprechend dem Schema anlegen
  3. Zugangsdaten in den PHP-Dateien konfigurieren

Start

Webserver starten und im Browser öffnen:

http://localhost/geizkragen

API

Produktsuche

GET /api/search_products.php?q=Suchbegriff

Antwort:

  • JSON mit passenden Produkten

Technische Architektur

Backend

  • PHP
  • Serverseitige Verarbeitung
  • Teilweise API-Struktur

Frontend

  • HTML5
  • CSS
  • Klassisches serverseitiges Rendering

Datenhaltung

  • MySQL / MariaDB
  • Ergänzend JSON (Statistiken)

Sicherheit und Hinweis zur öffentlichen Nutzung

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.


Empfohlene Sicherheitsmaßnahmen

  • Verwendung von Prepared Statements (PDO/MySQLi)
  • 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
  • Trennung von Backend und Frontend (API-first)
  • Nutzung eines modernen Frontend-Frameworks
  • Verbesserung der Benutzeroberfläche (Responsive Design)
  • Erweiterung des Empfehlungssystems
  • Automatisierte Tests

Entwicklungsumgebung

Empfohlen:

  • PhpStorm oder Visual Studio Code
  • MySQL Workbench
  • XAMPP oder vergleichbare lokale Serverumgebung

Lizenz

Derzeit ist keine Lizenz definiert. 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 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.

Für eine Weiterentwicklung sind insbesondere folgende Punkte entscheidend:

  • Strukturierung (MVC oder ähnliche Muster)
  • Absicherung der Datenbankzugriffe
  • Saubere Trennung von Logik und Darstellung
  • Skalierbarkeit durch API-basierte Architektur

Typische Fehlerquellen und Best Practices

Häufige Probleme

  • SQL-Injection durch direkte Queries
  • Fehlendes Passwort-Hashing
  • Vermischung von PHP und HTML
  • Unsichere Session-Verwaltung
  • Fehlende Eingabevalidierung

Best Practices

  • Prepared Statements konsequent verwenden
  • Zentrale Konfigurationsdateien nutzen
  • Logging und Fehlerhandling implementieren
  • Code modularisieren
  • Sicherheitskonzepte früh integrieren

Typischer Ablauf

  1. Benutzer sucht ein Produkt
  2. Ergebnisse werden angezeigt
  3. Produktdetailseite wird geöffnet
  4. Optional: Vergleich oder Speicherung in Wunschliste

Zusammenfassung

  • PHP-basierte Preisvergleichsplattform
  • Klassische serverseitige Architektur
  • Öffentliche Repository mit Lerncharakter
  • Sicherheit derzeit nicht ausreichend für Produktion
  • Gute Basis für Erweiterung und Refactoring