<?php // ============================================================ // UTF-8 AUSGABE // ============================================================ header('Content-Type: text/html; charset=UTF-8'); // ============================================================ // KONFIGURATION // ============================================================ $empfaenger = "ungesehen@neurodiv-sn.de"; $absender = "ungesehen@neurodiv-sn.de"; $uploadOrdner = __DIR__ . "/uploads"; $maxDateigroesse = 25 * 1024 * 1024; $erlaubteTypen = [ "image/jpeg" => "jpg", "image/png" => "png" ]; $meldung = ""; $erfolg = false; // ============================================================ // FORMULAR VERARBEITEN // ============================================================ if ($_SERVER["REQUEST_METHOD"] === "POST") { $name = trim($_POST["name"] ?? ""); $email = trim($_POST["email"] ?? ""); $auswahl = trim($_POST["auswahl"] ?? ""); $einwilligung = isset($_POST["einwilligung"]); // ======================================================== // FORMULARDATEN PRÜFEN // ======================================================== if ($name === "") { $meldung = "Bitte geben Sie Ihren Vor- und Nachnamen ein."; } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $meldung = "Bitte geben Sie eine gültige E-Mail-Adresse ein."; } elseif ($auswahl === "") { $meldung = "Bitte wählen Sie eine Option aus."; } elseif (!$einwilligung) { $meldung = "Bitte bestätigen Sie die Einwilligung."; } elseif ( !isset($_FILES["bild"]) || $_FILES["bild"]["error"] !== UPLOAD_ERR_OK ) { $meldung = "Bitte wählen Sie ein Bild aus."; } else { $datei = $_FILES["bild"]; // ==================================================== // DATEIGRÖSSE PRÜFEN // ==================================================== if ($datei["size"] > $maxDateigroesse) { $meldung = "Das Bild darf maximal 25 MB groß sein."; } else { // ================================================= // ECHTEN MIME-TYP ERMITTELN // ================================================= $finfo = finfo_open(FILEINFO_MIME_TYPE); $mimeTyp = finfo_file($finfo, $datei["tmp_name"]); finfo_close($finfo); // ================================================= // DATEITYP PRÜFEN // ================================================= if (!isset($erlaubteTypen[$mimeTyp])) { $meldung = "Es sind nur JPG-, JPEG- und PNG-Dateien erlaubt."; } else { // ============================================= // UPLOAD-ORDNER ERSTELLEN // ============================================= if (!is_dir($uploadOrdner)) { mkdir($uploadOrdner, 0755, true); } // ============================================= // SICHEREN DATEINAMEN ERZEUGEN // ============================================= $endung = $erlaubteTypen[$mimeTyp]; $neuerDateiname = date("Y-m-d_H-i-s") . "_" . bin2hex(random_bytes(8)) . "." . $endung; $ziel = $uploadOrdner . "/" . $neuerDateiname; // ============================================= // DATEI SPEICHERN // ============================================= if (!move_uploaded_file($datei["tmp_name"], $ziel)) { $meldung = "Die Datei konnte nicht gespeichert werden."; } else { // ========================================= // E-MAIL VORBEREITEN // ========================================= $betreff = "Neue Bildeinreichung"; $nachricht = "Es wurde eine neue Bildeinreichung über das Online-Formular gesendet.\n\n" . "Vor- und Nachname:\n" . $name . "\n\n" . "E-Mail:\n" . $email . "\n\n" . "Auswahl:\n" . $auswahl . "\n\n" . "Datei:\n" . $neuerDateiname . "\n\n" . "Dateigröße:\n" . number_format( $datei["size"] / 1024 / 1024, 2, ",", "." ) . " MB\n\n" . "Dateityp:\n" . $mimeTyp . "\n\n" . "Die Einwilligung zur Weiterverarbeitung des Bildes wurde bestätigt."; // ========================================= // DATEI EINLESEN // ========================================= $dateiInhalt = file_get_contents($ziel); // ========================================= // MIME-GRENZE // ========================================= $boundary = md5( uniqid( (string)time(), true ) ); // ========================================= // E-MAIL-HEADER // ========================================= $header = []; $header[] = "From: " . $absender; $header[] = "Reply-To: " . $email; $header[] = "MIME-Version: 1.0"; $header[] = 'Content-Type: multipart/mixed; boundary="' . $boundary . '"'; // ========================================= // TEXT DER E-MAIL // ========================================= $mailInhalt = "--" . $boundary . "\r\n" . "Content-Type: text/plain; charset=UTF-8\r\n" . "Content-Transfer-Encoding: 8bit\r\n\r\n" . $nachricht . "\r\n\r\n"; // ========================================= // BILD ALS ANHANG // ========================================= $mailInhalt .= "--" . $boundary . "\r\n" . 'Content-Type: ' . $mimeTyp . '; name="' . $neuerDateiname . '"' . "\r\n" . 'Content-Disposition: attachment; filename="' . $neuerDateiname . '"' . "\r\n" . "Content-Transfer-Encoding: base64\r\n\r\n" . chunk_split( base64_encode($dateiInhalt) ) . "\r\n"; // ========================================= // E-MAIL BEENDEN // ========================================= $mailInhalt .= "--" . $boundary . "--"; // ========================================= // E-MAIL SENDEN // ========================================= $mailGesendet = mail( $empfaenger, $betreff, $mailInhalt, implode("\r\n", $header) ); // ========================================= // ERGEBNIS // ========================================= if ($mailGesendet) { $erfolg = true; $meldung = "Vielen Dank! Ihre Bildeinreichung wurde erfolgreich übermittelt."; } else { $meldung = "Das Bild wurde gespeichert, aber die Benachrichtigungs-E-Mail konnte nicht versendet werden."; } } } } } }

ImpressumDatenschutz