FSST Projekt 4AHEL 2025/26 https://geizkragen.fabianschieder.com
Go to file
2026-04-02 00:24:03 +00:00
.idea Refactor bootstrap and db connection logic; improve code readability and structure 2026-03-28 20:17:46 +01:00
api Update search term validation to allow single character input in compcards.php, search-autocomplete.js, and search_products.php 2026-03-30 19:53:55 +02:00
assets Refactor product card styles for improved aesthetics and smoother hover effects 2026-03-31 00:48:17 +02:00
info Implement role management in user admin panel with deletion and update functionality 2026-03-30 22:18:41 +02:00
lib Fix formatting in bootstrap.php by removing unnecessary blank line 2026-03-30 20:06:48 +02:00
other improvements 2026-01-22 21:41:17 +01:00
.gitignore .gitignore aktualisiert 2026-03-23 19:13:07 +00:00
.htaccess comment out .htpasswd protection directives in .htaccess for testing 2026-02-27 22:00:54 +01:00
.htpasswd Initial commit: Website 2026-01-09 18:30:41 +00:00
404.php Enable error reporting in bootstrap.php for improved debugging 2026-03-28 20:30:13 +01:00
account.php Add user management functionality in admin_users.php 2026-03-30 20:31:35 +02:00
ad_recommendation.php Remove gradient animation from advertisement recommendations in ad_recommendation.php 2026-03-31 00:40:24 +02:00
admin_users.php Add role filtering to user search in admin panel 2026-03-30 22:40:53 +02:00
attrbar.php Refactor attribute filter bar styling and layout for improved usability 2026-03-30 23:12:06 +02:00
catbar.php refactor styles and structure for improved consistency and responsiveness across various components 2026-02-27 22:19:37 +01:00
compare.php Add styling for product comparison page and enhance layout 2026-03-30 23:26:27 +02:00
compcards.php Add attribute filter bar to product listing with dynamic selection 2026-03-30 23:02:35 +02:00
file.php improvements 2026-01-22 20:12:50 +01:00
footer.php improvements 2026-01-22 22:45:32 +01:00
header.php Update mobile navigation items for improved styling 2026-03-30 23:37:28 +02:00
impressum.php test Commit 2026-02-28 22:18:04 +01:00
index.php Add advertisement recommendation feature with styling to ad_recommendation.php 2026-03-31 00:27:50 +02:00
login.php refactor: centralize database connection logic and improve error handling 2026-03-18 15:33:28 +01:00
logout.php refactor session management and access control for improved security and maintainability 2026-02-27 23:18:44 +01:00
productAdder.php refactor: centralize database connection logic and improve error handling 2026-03-18 15:33:28 +01:00
productpage.php Add product comparison feature with dynamic attribute display 2026-03-30 23:20:09 +02:00
README.md README.md aktualisiert 2026-04-02 00:24:03 +00:00
register.php Add role assignment for new users during registration and update admin panel role selection to use a dropdown 2026-03-30 22:25:52 +02:00
stats.json WIP: lokale Änderungen 2026-03-23 19:17:34 +00:00
style.css Update navigation bar with button text for Home, Comparison, Wishlist, and Account; adjust transition duration in CSS 2026-03-30 23:35:59 +02:00
upload.php refactor: centralize database connection logic and improve error handling 2026-03-18 15:33:28 +01:00
wunschliste.php refactor: centralize database connection logic and improve error handling 2026-03-18 15:33:28 +01:00

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