Added galery
This commit is contained in:
82
README.md
82
README.md
@@ -41,12 +41,9 @@ if (!$response_data->success || $response_data->score < 0.5) {
|
||||
- Bessere User Experience
|
||||
- Intelligente Bot-Erkennung durch Verhaltensanalyse
|
||||
|
||||
```
|
||||
<!-- Screenshot Platzhalter -->
|
||||
[📸 Screenshot: Registrierungsformular]
|
||||
[📸 Screenshot: reCAPTCHA Badge]
|
||||
```
|
||||
|
||||

|
||||

|
||||

|
||||
---
|
||||
|
||||
## Erweiterung der Admin-Funktionen
|
||||
@@ -123,6 +120,79 @@ Implementierung einer vollständigen Notizen-Anwendung mit CRUD-Funktionalität
|
||||
|
||||
---
|
||||
|
||||
## Bildergalerie mit Verschlüsselung
|
||||
|
||||
#### Sichere Bildergalerie mit AES-256 Verschlüsselung
|
||||
|
||||
**Beschreibung:**
|
||||
Implementierung einer vollständigen Bildergalerie mit clientseitiger Vorschau und serverseitiger AES-256-CBC Verschlüsselung. Alle hochgeladenen Bilder werden verschlüsselt gespeichert und erst beim Abruf entschlüsselt.
|
||||
|
||||
**Features:**
|
||||
- **AES-256-CBC Verschlüsselung**: Jedes Bild wird mit einem einzigartigen Schlüssel verschlüsselt
|
||||
- **Automatische Thumbnail-Generierung**: Optimierte Vorschaubilder für schnelles Laden
|
||||
- **Drag & Drop Upload**: Moderne Upload-Oberfläche mit Datei-Drag & Drop
|
||||
- **AJAX-Upload mit Fortschrittsanzeige**: Echtzeit-Feedback während des Uploads
|
||||
- **Öffentliche/Private Bilder**: Benutzer können Sichtbarkeit ihrer Bilder steuern
|
||||
- **Bildvorschau vor Upload**: Clientseitige Vorschau des ausgewählten Bildes
|
||||
|
||||
**Technische Umsetzung:**
|
||||
|
||||
*Verschlüsselung (Upload):*
|
||||
```php
|
||||
$encryption_key = bin2hex(random_bytes(32));
|
||||
$iv = random_bytes(openssl_cipher_iv_length('AES-256-CBC'));
|
||||
$encrypted_image = openssl_encrypt($image_data, 'AES-256-CBC', $encryption_key, OPENSSL_RAW_DATA, $iv);
|
||||
$encrypted_image = base64_encode($iv . $encrypted_image);
|
||||
```
|
||||
|
||||
*Entschlüsselung (Anzeige):*
|
||||
```php
|
||||
$encrypted_data = base64_decode(file_get_contents($filepath));
|
||||
$iv = substr($encrypted_data, 0, $iv_length);
|
||||
$encrypted_data = substr($encrypted_data, $iv_length);
|
||||
$decrypted = openssl_decrypt($encrypted_data, 'AES-256-CBC', $encryption_key, OPENSSL_RAW_DATA, $iv);
|
||||
```
|
||||
|
||||
**Datenbankstruktur:**
|
||||
```sql
|
||||
CREATE TABLE `gallery` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_id` int(11) NOT NULL,
|
||||
`filename` varchar(255) NOT NULL,
|
||||
`thumb_filename` varchar(255) NOT NULL,
|
||||
`title` varchar(255) NOT NULL,
|
||||
`description` text,
|
||||
`is_public` tinyint(1) NOT NULL DEFAULT 1,
|
||||
`file_size` int(11) NOT NULL DEFAULT 0,
|
||||
`mime_type` varchar(100) NOT NULL,
|
||||
`encryption_key` varchar(64) NOT NULL,
|
||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
```
|
||||
|
||||
**Unterstützte Formate:**
|
||||
- JPEG / JPG
|
||||
- PNG (mit Transparenz-Erhaltung)
|
||||
- GIF
|
||||
- WebP
|
||||
|
||||
**Zugriffsrechte:**
|
||||
- **Öffentliche Galerie**: Alle öffentlichen Bilder für jeden sichtbar
|
||||
- **Meine Bilder**: Nur eigene Bilder (öffentlich und privat)
|
||||
- **Upload/Bearbeiten/Löschen**: Nur für angemeldete Benutzer
|
||||
|
||||
```
|
||||
<!-- Screenshot Platzhalter -->
|
||||
[📸 Screenshot: Galerie-Übersicht mit Bildraster]
|
||||
[📸 Screenshot: Upload-Formular mit Drag & Drop Zone]
|
||||
[📸 Screenshot: Upload-Fortschrittsanzeige]
|
||||
[📸 Screenshot: Einzelbildansicht]
|
||||
[📸 Screenshot: Meine Bilder - Verwaltung]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## jQuery - Einführung und Grundlagen
|
||||
|
||||
#### JavaScript Basics
|
||||
|
||||
Reference in New Issue
Block a user