wenn man in Mobirise in das Feld Notification Email or Action URL: einen Pfad eingeben will, geht das nicht. Mobirise nimmt nur mailer.php, aber nicht mailordner/mailer.php.
Wenn also der mailer.php nicht im Root liegt, sondern in einem Verzeichnis, dann hat man ein Problem
Meine Lösung: eine Bridge die auf den eigentlichen mailer.php weiterleitet.
Warum der mailer.php in einem Verzeichnis liegen könnte - Logfiles werden geschrieben, weitere Dateien die zum mailer.php gehören liegen in einem Verzeichnis, oder einfach nur weil man alles sauber trennen will
Hier mein Script dazu mobimailer.php:
Code: Alles auswählen
<?php
/**
*
* Bridge für Mobirise-Formulare → leitet an mailer/mailer.php weiter
* Sicher & kompatibel mit Captcha, DOI, PDF etc.
*
* © Volker Niederastroth
*/
// ---------------------------------------------------------
// Konfiguration
// ---------------------------------------------------------
$mailerPath = __DIR__ . '/mailer/mailer.php'; // Pfad zum eigentlichen Mailer
$logFile = __DIR__ . '/mailer/formsend.log'; // optionales Logfile
// ---------------------------------------------------------
// Nur POST-Anfragen akzeptieren
// ---------------------------------------------------------
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
header('Content-Type: text/plain; charset=utf-8');
echo "405 Method Not Allowed\nNur POST-Anfragen sind erlaubt.";
exit;
}
// ---------------------------------------------------------
// Prüfen, ob der Mailer existiert
// ---------------------------------------------------------
if (!file_exists($mailerPath)) {
http_response_code(500);
header('Content-Type: text/plain; charset=utf-8');
echo "Fehler: Mailer nicht gefunden unter $mailerPath";
exit;
}
// ---------------------------------------------------------
// Optional: Logging (nur minimale Infos)
// ---------------------------------------------------------
try {
$logData = sprintf(
"[%s] Formular von %s (%s)\n",
date('Y-m-d H:i:s'),
$_SERVER['REMOTE_ADDR'] ?? 'unbekannt',
$_SERVER['HTTP_REFERER'] ?? 'kein Referer'
);
file_put_contents($logFile, $logData, FILE_APPEND);
} catch (Throwable $e) {
// kein Problem, wenn Logging fehlschlägt
}
// ---------------------------------------------------------
// Anfrage an echten Mailer weitergeben
// ---------------------------------------------------------
define('MOBIRISE_BRIDGE', true);
include $mailerPath;
exit;
Vorher natürlich mit Euren Pfaden und mailer Namen abändern
Jetzt der extra Bonus
Damit erst gar kein Bot an den eigentlichen mailer.php kommt, kann man das mailscript ( egal wie es aufgebaut ist ) mit dem Code ganz am Anfang schützen:
Code: Alles auswählen
<?php
if (!defined('MOBIRISE_BRIDGE')) {
http_response_code(403);
exit('Direkter Zugriff verboten');
}Code: Alles auswählen
Require all denied
