| .idea | ||
| api | ||
| assets | ||
| info | ||
| installation | ||
| 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 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
- Neue Datenbank erstellen
- Tabellen entsprechend dem Schema anlegen
- 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
- Benutzer sucht ein Produkt
- Ergebnisse werden angezeigt
- Produktdetailseite wird geöffnet
- 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