## Projektbeschreibung
Ein schlankes und benutzerfreundliches Download-Portal für das einfache Teilen und Verwalten von Dateien. Ideal für Software-Entwickler, Content Creator, Unternehmen oder Communities, die Dateien zum kostenlosen Download anbieten möchten.
## Hauptfunktionen
### Öffentlicher Bereich
- **Download-Übersicht** - Alle verfügbaren Dateien auf einen Blick
- **Detailinformationen** - Titel, Beschreibung, Dateigröße
- **Download-Counter** - Anzahl der Downloads wird angezeigt
- **Ein-Klick-Download** - Direkter Download ohne Umwege
- **Pagination** - Übersichtliche Darstellung bei vielen Dateien
- **Responsive Design** - Funktioniert auf allen Geräten
### Admin-Panel
- **Datei-Upload** - Einfaches Hochladen über Web-Interface
- **Metadaten** - Titel und Beschreibung für jede Datei
- **Datei-Verwaltung** - Übersicht aller Uploads
- **Status-Kontrolle** - Dateien aktivieren/deaktivieren
- **Download-Statistik** - Anzahl der Downloads einsehen
- **Lösch-Funktion** - Dateien entfernen
## Technische Details
**Programmiersprache:** PHP 8.4
**Datenbank:** MySQL mit 2 Tabellen
**Sicherheit:** CSRF-Schutz, PDO prepared statements, Bcrypt
**Design:** Modernes Blau-Design
### Datenbankstruktur
- `downloads` - Datei-Informationen, Pfade und Statistiken
- `admin` - Admin-Zugangsdaten
### Datei-Speicherung
Hochgeladene Dateien werden im `uploads/` Verzeichnis gespeichert mit:
- Eindeutigen Dateinamen (Timestamp + Original)
- Metadaten in Datenbank
- Automatische Größenberechnung
- Download-Counter-Tracking
## Installation
1. Alle Dateien auf Webserver hochladen
2. `uploads/` Verzeichnis erstellen (wird automatisch angelegt)
3. Schreibrechte für `uploads/` setzen (chmod 755)
4. `install.php` im Browser aufrufen
5. Datenbank-Zugangsdaten eingeben
6. Admin-Account erstellen
**Standard-Admin:**
Benutzername: `admin`
Passwort: *(beim Setup festgelegt)*
## Verwendung
### Dateien hochladen
1. Als Admin anmelden
2. Titel eingeben (z.B. "Software v1.2")
3. Beschreibung hinzufügen (optional)
4. Datei auswählen
5. "Hochladen" klicken
6. Datei ist sofort verfügbar
### Dateien verwalten
1. Admin-Panel öffnen
2. Übersicht aller Dateien einsehen
3. Download-Statistiken prüfen
4. Dateien aktivieren/deaktivieren
5. Bei Bedarf löschen
### Dateien herunterladen
1. Hauptseite besuchen
2. Gewünschte Datei finden
3. "Herunterladen" klicken
4. Download startet automatisch
## Features im Detail
### Download-System
- **Direkt-Download** - Keine Wartezeiten
- **Counter-Tracking** - Jeder Download wird gezählt
- **Dateigrößen** - Automatisch formatiert (KB, MB, GB)
- **Eindeutige Links** - Jede Datei hat eigene ID
- **Pagination** - 12 Dateien pro Seite (anpassbar)
### Sicherheit
- **CSRF-Schutz** - Token-Validierung für alle Formulare
- **SQL-Injection-Schutz** - PDO prepared statements
- **XSS-Prevention** - htmlspecialchars auf Output
- **Admin-Authentifizierung** - Bcrypt-Passwort-Hashing
- **Session-Sicherheit** - HttpOnly, Secure flags
### Benutzerfreundlichkeit
- **Einfaches Interface** - Klare Navigation
- **Schneller Upload** - Drag & Drop möglich (Browser-abhängig)
- **Übersichtliche Liste** - Card-Design für Dateien
- **Status-Badges** - Aktiv/Inaktiv sofort erkennbar
- **Download-Counter** - Beliebtheit auf einen Blick
## Einsatzgebiete
- **Software-Entwickler** - Programme, Updates, Tools verteilen
- **Content Creator** - E-Books, PDFs, Vorlagen teilen
- **Unternehmen** - Kataloge, Broschüren, Dokumente
- **Bildungseinrichtungen** - Lernmaterialien, Scripts
- **Communities** - Ressourcen für Mitglieder
- **Open Source** - Projekt-Releases hosten
- **Fotografen** - Hochauflösende Bilder (Achtung: Speicherplatz)
## Unterstützte Dateitypen
Das System akzeptiert standardmäßig alle Dateitypen:
- **Dokumente** - PDF, DOCX, XLSX, TXT
- **Archive** - ZIP, RAR, TAR, GZ
- **Software** - EXE, MSI, DMG, APK
- **Bilder** - JPG, PNG, GIF (besser: Bild-Gallery verwenden)
- **Videos** - MP4, AVI, MOV (Achtung: Speicherplatz)
- **Audio** - MP3, WAV, OGG
- **Code** - ZIP mit Quellcode
**Empfehlung:** Dateitypen im Admin-Panel konfigurierbar machen.
## Systemanforderungen
- **Webserver** - Apache/Nginx mit PHP
- **PHP** - Version 8.0 oder höher
- **MySQL** - Version 5.7 oder höher
- **Speicherplatz** - Je nach Dateigröße (mind. 100 MB empfohlen)
- **Upload-Limit** - In php.ini anpassen:
```ini
upload_max_filesize = 100M
post_max_size = 100M
max_execution_time = 300
```
## Dateien
- `index.php` - Öffentliche Download-Übersicht
- `download.php` - Download-Handler mit Counter
- `admin.php` - Admin-Panel für Verwaltung
- `config.php` - Datenbank-Konfiguration
- `install.php` - Installations-Wizard
- `style.css` - Design-Stylesheet
- `download.sql` - Datenbank-Schema
- `uploads/` - Verzeichnis für hochgeladene Dateien
## Konfiguration
### PHP Upload-Limits erhöhen
In `php.ini` oder `.htaccess`:
```ini
upload_max_filesize = 100M
post_max_size = 100M
max_execution_time = 300
memory_limit = 256M
```
### Dateigröße anzeigen
```php
function formatSize($bytes) {
if($bytes >= 1073741824) return number_format($bytes/1073741824, 2).' GB';
if($bytes >= 1048576) return number_format($bytes/1048576, 2).' MB';
if($bytes >= 1024) return number_format($bytes/1024, 2).' KB';
return $bytes.' B';
}
```
### Pagination anpassen
In `index.php`:
```php
$perPage = 12; // Anzahl Dateien pro Seite
```
## Best Practices
### Für Betreiber
- Regelmäßig Backups erstellen
- Speicherplatz überwachen
- Alte/ungenutzte Dateien löschen
- Virenscanner verwenden
- Download-Statistiken auswerten
### Datei-Benennung
- Sprechende Titel verwenden
- Version-Nummern angeben
- Beschreibung ausfüllen
- Dateiformat erwähnen
### Sicherheit
- Starkes Admin-Passwort
- SSL/HTTPS verwenden
- Regelmäßige Updates
- Zugriffslogs prüfen
- Backups extern speichern
## Erweiterungsideen
### Basis-Features
- **Kategorien** - Dateien gruppieren
- **Suchfunktion** - Dateien finden
- **Sortierung** - Nach Name, Größe, Downloads
- **Thumbnails** - Vorschaubilder für Bilder/PDFs
- **Mehrfach-Upload** - Mehrere Dateien gleichzeitig
### Erweiterte Features
- **Benutzer-Registrierung** - User können selbst hochladen
- **Kommentare** - Feedback zu Downloads
- **Bewertungen** - 5-Sterne-System
- **Tags** - Flexible Verschlagwortung
- **Versionierung** - Mehrere Versionen einer Datei
- **Changelog** - Was ist neu?
### Premium-Features
- **Download-Limit** - X Downloads pro IP/Tag
- **Passwort-Schutz** - Geschützte Downloads
- **Ablaufdatum** - Zeitlich begrenzte Links
- **Direktlinks** - Für externe Einbindung
- **API** - Programmatischer Zugriff
- **CDN-Integration** - Schnellere Downloads
- **E-Mail-Benachrichtigung** - Bei neuen Dateien
### Analytics
- **Download-Statistiken** - Detaillierte Auswertung
- **IP-Tracking** - Woher kommen Downloads?
- **Zeitanalyse** - Peak-Zeiten erkennen
- **Referrer** - Von welchen Seiten kommen User?
- **Beliebteste Dateien** - Top 10 Downloads
## Wartung
### Regelmäßig
- Alte Dateien archivieren
- Datenbank optimieren
- Logs prüfen
- Backups testen
### Bei Problemen
- PHP-Error-Log prüfen
- Dateirechte überprüfen (uploads/ Verzeichnis)
- Speicherplatz checken
- MySQL-Verbindung testen
### Optimierung
- Große Dateien komprimieren
- CDN für beliebte Downloads
- Caching aktivieren
- Gzip-Kompression nutzen
## Rechtliche Hinweise
⚠️ **Wichtig:**
- Nur eigene oder lizenzierte Dateien hochladen
- Urheberrechte beachten
- Impressumspflicht (Deutschland)
- Datenschutzerklärung bereitstellen
- Bei geschäftlicher Nutzung: AGB erstellen
- Haftungsausschluss empfohlen
## Performance-Tipps
### Für viele Downloads
- MySQL Query-Cache aktivieren
- PHP OPcache nutzen
- Nginx statt Apache (optional)
- Separate Storage-Server für Dateien
- Load-Balancing bei sehr hohem Traffic
### Für große Dateien
- Streaming statt vollständigem Laden
- Chunked Transfer nutzen
- Resume-Funktion implementieren
- Externe Storage (S3, Spaces)
## Troubleshooting
**Problem:** Upload schlägt fehl
**Lösung:** PHP upload_max_filesize erhöhen
**Problem:** Download zählt nicht
**Lösung:** Cookies/Session prüfen
**Problem:** Datei nicht gefunden
**Lösung:** uploads/ Verzeichnis und Rechte prüfen
**Problem:** Zu langsam
**Lösung:** Caching aktivieren, Dateien extern hosten
## Support
- Datenbank-Backups vor Änderungen
- PHP-Error-Reporting aktivieren während Entwicklung
- Logs regelmäßig prüfen
- Bei Problemen: config.php und .htaccess checken
## Lizenz
Freie Verwendung für private und kommerzielle Zwecke.
---
**Version:** 1.0
**Entwickelt:** 2025
**Sprache:** Deutsch
**PHP:** 8.4+
**Kategorie:** File Sharing / Downloads