mailer.php in anderen Verzeichnis
Verfasst: Mo 29. Dez 2025, 22:36
Hallo zusammen,
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:
Wer es brauchen kann, einfach in einen Editor ( notepad ++ ) kopieren und als mobimailer.php speichern.
Vorher natürlich mit Euren Pfaden und mailer Namen abändern
Den dann ins Root legen und in Mobirise als Action den mobimailer.php angeben.
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:
Und auch gerne noch per .htaccess schützen ( die Bridge kommt ja dran )
So wird der mailer.php "unsichtbar" für Bots 
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