FSST Projekt 4AHEL 2025/26 https://geizkragen.fabianschieder.com
Go to file
2026-04-03 22:41:15 +02: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 Update .gitignore to exclude SQL dump files 2026-04-02 20:50:00 +02: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 Fix spacing issue in admin_users.php layout 2026-04-03 22:41:15 +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:26:08 +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 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