From b8e884a5aa5d4912190e557acd3f52bf559a49ce Mon Sep 17 00:00:00 2001 From: NOrtmann1 Date: Sun, 14 Jun 2026 12:53:46 +0200 Subject: [PATCH] Update createArticle-controller.php --- php/controller/createArticle-controller.php | 56 ++++++++++++--------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/php/controller/createArticle-controller.php b/php/controller/createArticle-controller.php index 44f487b..e964d17 100644 --- a/php/controller/createArticle-controller.php +++ b/php/controller/createArticle-controller.php @@ -73,36 +73,46 @@ require_once '../validator/article-validator.php'; mkdir($uploadDir, 0755, true); } - foreach ($blocks as &$block) { - // Base64-Format-Prüfung: - if ($block['type'] === 'image' && str_starts_with($block['value'], 'data:image/')) { + if (is_array($blocks)) { + foreach ($blocks as &$block) { + // sicherstellen, dass 'type' und 'value' existieren: + if (isset($block['type']) && isset($block['value']) && $block['type'] === 'image' && str_starts_with($block['value'], 'data:image/')) { - // Base64-String zerlegen: - $parts = explode(',', $block['value']); - $metadata = $parts[0]; - $base64Data = $parts[1]; + // Base64-String zerlegen + $parts = explode(',', $block['value']); - // Dateiendung ermitteln - preg_match('/data:image\/(?.*?);/', $metadata, $matches); - $extension = $matches['extension'] ?? 'jpg'; - if ($extension === 'jpeg') { $extension = 'jpg'; } + // falls der String korrupt ist und kein Komma hat + if (count($parts) < 2) { + continue; + } - // Eindeutigen Dateinamen generieren - $fileName = 'img_' . uniqid() . '.' . $extension; - $filePath = $uploadDir . $fileName; + $metadata = $parts[0]; + $base64Data = $parts[1]; - // Datei im /uploads speichern: - if (file_put_contents($filePath, base64_decode($base64Data)) !== false) { - // temporären Base64-String durch den echten Pfad ersetzen - $block['value'] = 'uploads/' . $fileName; - } else { - $_SESSION["message"] = "image_upload_error"; - header("location: ../../index.php?pfad=createArticle"); - exit(); + // Dateiendung ermitteln + preg_match('/data:image\/(?.*?);/', $metadata, $matches); + $extension = $matches['extension'] ?? 'jpg'; + if ($extension === 'jpeg') { + $extension = 'jpg'; + } + + // Eindeutigen Dateinamen generieren + $fileName = 'img_' . uniqid() . '.' . $extension; + $filePath = $uploadDir . $fileName; + + // Datei im /uploads speichern: + if (file_put_contents($filePath, base64_decode($base64Data)) !== false) { + // temporären Base64-String durch den echten Pfad ersetzen + $block['value'] = 'uploads/' . $fileName; + } else { + $_SESSION["message"] = "image_upload_error"; + header("location: ../../index.php?pfad=createArticle"); + exit(); + } } } + unset($block); } - unset($block); // Aktualisiertes Array wieder in JSON konvertieren $finalContent = json_encode($blocks, JSON_UNESCAPED_UNICODE);