Seite 1 von 3

Gästebuch Block

Verfasst: Di 9. Jun 2026, 08:39
von Volker
Huhu :D

Ich hab da mal was gebastelt ;)



Demo Seite: https://www.niederastroth.de/gbdemo/

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 08:51
von Tommy Herrmann
Hattest Du nicht schon einen Gästebuch-Block :eek:

https://www.mobirise-tutorials.com/Tuto ... Volker.php

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 08:53
von Volker
Tommy

das ist ein Block den kann man einfach in Mobirse einbauen.
Schau ihn dir mal an, dann siehst den unterschied ;)

Nix Iframe oder include :D

Styling komplett in den Blockeigenschaften ;)

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 10:05
von Tommy Herrmann
Noch nicht angeguckt, kurze Frage:

Wieso steht da das Passwort denn überhaupt im HTML des Blocks "volker04", zumal es gar nicht das richtige Passwort ist.

Code: Alles auswählen

var currentAdminKey = currentSection ? String(currentSection.getAttribute('data-admin-key')).trim() : 'volker04';
Kann man denn das Gästebuch auch so einstellen, dass Beiträge erst nach der Freigabe vom Admin erscheinen, das ist ja sonst viel zu gefährlich. Da haut ein Bot sonst mal zehntausend Porno-Beiträge in einer Minute rein.

Natürlich müsste der Admin dann auch mit jedem neuen Eintrag ins Gästebuch mit einer E-Mail benachrichtigt werden.

Weiterhin reicht mir eigentlich das "nur löschen" (Papierkorb) nicht aus - man muss ein Gästebuch auch immer editieren können.

Sieht aber sehr schick aus und kann natürlich auch genau so bleiben - nur das mit dem Passwort hätte ich gerne gewusst.

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 11:13
von Volker
Tommy,
da ich jetzt eh 9 Stunden im Bus sitze :D

Werde ich das mal aufhübschen für Dich und alle anderen ;)

Melde mich dann...

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 11:33
von Volker
Tommy teste mal admin PW volker04 man kann löschen und editieren, bekommt eine mail kann frei schalten alles wie gewünscht.
Wenn dein OK kommt hau ich das ins zip

Passwort ist aus dem HTML auch raus ;)

Das war ja heute morgen eine ganz neue Idee und die sollte so einfach wie möglich sein (für mich)
Jetzt durch Tommy mal wieder eine Profi Anwendung :D

https://www.niederastroth.de/gbdemo/

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 12:34
von Volker
Ich hab es mal in Zip gepackt ;)

Ab jetzt müsst ihr nur in der API die Werte ändern:
// 🔒 EINSTELLUNGEN
$adminPassword = 'volker04';
$adminEmail = 'volker@niederastroth.de'; // <-- DEINE MAIL-ADRESSE!
$websiteUrl = 'https://www.niederastroth.de/gbdemo/'; // <-- URL ZU DEINEM GB-ORDNER!
Also Passwort, Eure E-Mail und die URL zum Gästebuch. Das ist alles. Die API sollte dann aber auch im selben Verzeichnis sein wie das Gästebuch !

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 13:34
von Tommy Herrmann
Wieso sitzt Du 9 Stunden in einem Bus :eek:

Wie schaltet man einen Beitrag denn frei?

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 13:36
von Volker
Tommy ich arbeite doch beim Landratsamt und mache Geschwindigkeits Messungen ;)
Freischalten geht per mail, wenn du auf den link in der mail klickst wird frei geschaltet

Hab Deinen jetzt frei geschaltet

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 14:00
von Tommy Herrmann
Habe das jetzt hier (noch nicht fertig) eingebaut.

https://www.mobirise-tutorials.com/AI-B ... tbuch.html

Leider kann ich keinen Beitrag freischalten, weil die einfache Mail nicht ankommt. Das Problem kennen wir ja bereits, IONOS verlangt SFTP mit Server-Angabe, Passwort, usw.

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 14:02
von Volker
Dann bau ich SMTP noch ein ;)

auf die schnelle Tommy, teste das mal als api:

Code: Alles auswählen

<?php
// guestbook-api.php - Intelligente Hybrid-Mail (SMTP / PHP-Mail) & Admin-Modus
header('Content-Type: application/json; charset=utf-8');
date_default_timezone_set('Europe/Berlin');

// 🔒 Konfiguration
$apiPassword = 'volker04'; // Dein Admin-Passwort für den Doppelklick
$adminEmail  = 'info@niederastroth.de'; // Deine Empfänger-Adresse
$websiteUrl  = 'https://www.niederastroth.de/gbdemo/'; // URL zu diesem Ordner (für den Freischaltlink)

// 📧 SMTP KONFIGURATION (Leer lassen, wenn du normales PHP-Mail nutzen willst!)
define('SMTP_HOST', 'smtp.niederastroth.de'); // z.B. smtp.niederastroth.de
define('SMTP_PORT', 465);                 // 465 (SSL) oder 587 (TLS)
define('SMTP_CRYPT', 'ssl');              // 'ssl', 'tls' oder ''
define('SMTP_USER', 'info@niederastroth.de'); // Deine SMTP-Mailadresse
define('SMTP_PASS', 'DEIN_SMTP_PASSWORT'); // Dein echtes Mail-Passwort (leer lassen für PHP-Mail)

$dbFile = 'gaestebuch.db';

try {
    $db = new PDO('sqlite:' . __DIR__ . '/' . $dbFile);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    $db->exec("CREATE TABLE IF NOT EXISTS entries (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        message TEXT NOT NULL,
        status INTEGER DEFAULT 0,
        created_at TEXT NOT NULL
    )");
} catch (PDOException $e) {
    echo json_encode(['success' => false, 'error' => 'Datenbankfehler: ' . $e->getMessage()]);
    exit;
}

// GET-ANFRAGEN: Einträge laden oder Freischaltung per E-Mail-Link
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    // Fall A: Freischaltung über den Link aus der E-Mail
    if (isset($_GET['action']) && $_GET['action'] === 'approve') {
        $id = intval($_GET['id'] ?? 0);
        $hash = $_GET['hash'] ?? '';
        
        if ($hash === md5($id . $apiPassword)) {
            $stmt = $db->prepare("UPDATE entries SET status = 1 WHERE id = ?");
            $stmt->execute([$id]);
            
            header("Content-Type: text/html; charset=UTF-8");
            echo "<html><head><title>Erfolg</title></head><body style='font-family:Arial,sans-serif;text-align:center;padding-top:80px;background:#f8fafc;color:#0f172a;'>";
            echo "<div style='display:inline-block;background:#fff;padding:40px;border-radius:14px;box-shadow:0 4px 20px rgba(0,0,0,0.05);'>";
            echo "<h2 style='color:#22c55e;'>🎉 Eintrag erfolgreich freigeschaltet!</h2>";
            echo "<p>Der Beitrag ist ab jetzt live für alle Besucher sichtbar.</p>";
            echo "</div></body></html>";
            exit;
        } else {
            header("Content-Type: text/html; charset=UTF-8");
            die("<h3>Ungültiger Freischalt-Code.</h3>");
        }
    }

    // Fall B: Normale Einträge für das Gästebuch laden
    $isAdmin = false;
    if (isset($_GET['adminCheck']) && $_GET['adminCheck'] === $apiPassword) {
        $isAdmin = true;
    }

    if ($isAdmin) {
        $stmt = $db->query("SELECT * FROM entries ORDER BY created_at DESC");
    } else {
        $stmt = $db->query("SELECT * FROM entries WHERE status = 1 ORDER BY created_at DESC");
    }
    $entries = $stmt->fetchAll(PDO::FETCH_ASSOC);
    echo json_encode(['success' => true, 'entries' => $entries]);
    exit;
}

// POST-ANFRAGEN: Eintragen, Löschen, Bearbeiten, Login-Prüfung
$input = json_decode(file_get_contents('php://input'), true);

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    
    if (isset($input['action']) && $input['action'] === 'checkLogin') {
        if (isset($input['password']) && $input['password'] === $apiPassword) {
            echo json_encode(['success' => true]);
        } else {
            echo json_encode(['success' => false, 'error' => 'Falsches Passwort!']);
        }
        exit;
    }

    if (isset($input['action']) && $input['action'] === 'delete') {
        if (!isset($input['password']) || $input['password'] !== $apiPassword) {
            echo json_encode(['success' => false, 'error' => 'Nicht autorisiert!']);
            exit;
        }
        $stmt = $db->prepare("DELETE FROM entries WHERE id = ?");
        $stmt->execute([$input['id']]);
        echo json_encode(['success' => true]);
        exit;
    }

    if (isset($input['action']) && $input['action'] === 'update') {
        if (!isset($input['password']) || $input['password'] !== $apiPassword) {
            echo json_encode(['success' => false, 'error' => 'Nicht autorisiert!']);
            exit;
        }
        $stmt = $db->prepare("UPDATE entries SET message = ? WHERE id = ?");
        $stmt->execute([$input['message'], $input['id']]);
        echo json_encode(['success' => true]);
        exit;
    }

    // Neuer Eintrag verfassen
    if (isset($input['name']) && isset($input['message'])) {
        $name = trim(htmlspecialchars($input['name']));
        $message = trim(htmlspecialchars($input['message']));

        if (empty($name) || empty($message)) {
            echo json_encode(['success' => false, 'error' => 'Bitte alle Felder ausfüllen.']);
            exit;
        }

        $stmt = $db->prepare("INSERT INTO entries (name, message, created_at, status) VALUES (?, ?, ?, 0)");
        $timestamp = date('Y-m-d H:i:s');
        $stmt->execute([$name, $message, $timestamp]);
        $lastId = $db->lastInsertId();

        // Freischalt-Link generieren
        $approveHash = md5($lastId . $apiPassword);
        $approveLink = $websiteUrl . "guestbook-api.php?action=approve&id=" . $lastId . "&hash=" . $approveHash;

        $subject = "Neuer Gästebucheintrag von " . $name;
        $mailBody = "Hallo Admin,\n\nein neuer Eintrag wartet auf Freischaltung:\n\nName: $name\nNachricht:\n$message\n\nKlicke auf den folgenden Link, um den Eintrag sofort zu veröffentlichen:\n" . $approveLink . "\n\nGruß dein Server.";
        
        // 🔀 DIE ENTWEDER-ODER-SCHLEIFE (Wählt vollautomatisch den richtigen Weg)
        if (SMTP_PASS !== 'DEIN_SMTP_PASSWORT' && SMTP_PASS !== '') {
            sendHybridSMTP($adminEmail, $subject, $mailBody);
        } else {
            $headers = "From: no-reply@" . $_SERVER['HTTP_HOST'] . "\r\n" . "Content-Type: text/plain; charset=UTF-8";
            @mail($adminEmail, $subject, $mailBody, $headers);
        }

        echo json_encode(['success' => true]);
        exit;
    }
}

// NATIVE SMTP SOCKET ENGINE
function sendHybridSMTP($to, $subject, $body) {
    $host = SMTP_CRYPT === 'ssl' ? 'ssl://' . SMTP_HOST : SMTP_HOST;
    $socket = @fsockopen($host, SMTP_PORT, $errno, $errstr, 10);
    if (!$socket) return false;

    function parseResponse($socket) {
        $res = "";
        while (($str = fgets($socket, 515)) !== false) {
            $res .= $str;
            if (substr($str, 3, 1) == " ") break;
        }
        return $res;
    }

    parseResponse($socket);
    fwrite($socket, "EHLO " . $_SERVER['SERVER_NAME'] . "\r\n");
    parseResponse($socket);

    if (SMTP_CRYPT === 'tls') {
        fwrite($socket, "STARTTLS\r\n");
        parseResponse($socket);
        stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT);
        fwrite($socket, "EHLO " . $_SERVER['SERVER_NAME'] . "\r\n");
        parseResponse($socket);
    }

    fwrite($socket, "AUTH LOGIN\r\n");
    parseResponse($socket);
    fwrite($socket, base64_encode(SMTP_USER) . "\r\n");
    parseResponse($socket);
    fwrite($socket, base64_encode(SMTP_PASS) . "\r\n");
    parseResponse($socket);

    fwrite($socket, "MAIL FROM: <" . SMTP_USER . ">\r\n");
    parseResponse($socket);
    fwrite($socket, "RCPT TO: <" . $to . ">\r\n");
    parseResponse($socket);
    fwrite($socket, "DATA\r\n");
    parseResponse($socket);

    $headers = "MIME-Version: 1.0\r\nContent-Type: text/plain; charset=UTF-8\r\n";
    $headers .= "From: <" . SMTP_USER . ">\r\nTo: <" . $to . ">\r\nSubject: =?UTF-8?B?" . base64_encode($subject) . "?=\r\n";
    
    fwrite($socket, $headers . "\r\n" . $body . "\r\n.\r\n");
    parseResponse($socket);
    fwrite($socket, "QUIT\r\n");
    fclose($socket);
    return true;
}
?>
ich hoffe das geht so ohne den phpmailer, ich kanns jetzt gerade nicht testen

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 14:07
von Tommy Herrmann
Kann ich machen - NUR - Du musst es tun, denn das benötigt fast jeder und wenn es bei Dir im Download fehlt, ist es nicht zu gebrauchen und ich kann dann diese Erweiterung auch nicht bei mir promoten.


Ich teste Deine neue Datei ---

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 14:09
von Volker
wenn du sagst das die api geht kommt die in den download

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 14:23
von Tommy Herrmann
Jetzt geht die E-Mail und auch das Freischalten.

Das Passwort funktioniert nicht :confused:

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 14:24
von Volker
Passwort ? Muss gehen

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 14:27
von Tommy Herrmann
Egal welches Passwort ich eintrage (auch "volker04") geht es nicht …

Hast Du eine Idee

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 14:28
von Volker
Warte

hab den Fehler gefunden Passwort 2 mal drin einmal für SMTP und einmal Login änderung:

komplette API

Code: Alles auswählen

<?php
// =========================================================================
// guestbook-api.php - Vollständige Hybrid-Version (SMTP/Mail) mit Inline-Editor
// =========================================================================
header('Content-Type: application/json; charset=utf-8');
date_default_timezone_set('Europe/Berlin');

// 🔒 1. DEIN ADMIN-PASSWORT FÜR BROWSER-LOGIN (DOPPELKLICK)
$apiPassword = 'volker04'; 

// 📧 2. SMTP & MAIL EMPFÄNGER CONFIGURATION
$adminEmail  = 'info@niederastroth.de'; 
$websiteUrl  = 'https://www.niederastroth.de/gbdemo/'; // Wichtig für den Freischaltlink!

define('SMTP_HOST', 'smtp.niederastroth.de'); 
define('SMTP_PORT', 465);                 // 465 (SSL) oder 587 (TLS)
define('SMTP_CRYPT', 'ssl');              // 'ssl', 'tls' oder ''
define('SMTP_USER', 'info@niederastroth.de'); 
define('SMTP_PASS', 'DEIN_SMTP_PASSWORT'); // Echte Zugangsdaten eintragen (oder leer lassen für PHP mail)

// =========================================================================
// AB HIER NIX MEHR ÄNDERN - DIESER TEIL LÄUFT VOLLAUTOMATISCH
// =========================================================================
$dbFile = 'gaestebuch.db';

try {
    $db = new PDO('sqlite:' . __DIR__ . '/' . $dbFile);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    $db->exec("CREATE TABLE IF NOT EXISTS entries (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        message TEXT NOT NULL,
        status INTEGER DEFAULT 0,
        created_at TEXT NOT NULL
    )");
} catch (PDOException $e) {
    echo json_encode(['success' => false, 'error' => 'Datenbankfehler: ' . $e->getMessage()]);
    exit;
}

// 🌐 GET-ANFRAGEN: Einträge laden oder E-Mail-Freischaltung abfangen
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    
    // Fall A: Freischaltung über den E-Mail-Link
    if (isset($_GET['action']) && $_GET['action'] === 'approve') {
        $id = intval($_GET['id'] ?? 0);
        $hash = $_GET['hash'] ?? '';
        
        if ($hash === md5($id . $apiPassword)) {
            $stmt = $db->prepare("UPDATE entries SET status = 1 WHERE id = ?");
            $stmt->execute([$id]);
            
            header("Content-Type: text/html; charset=UTF-8");
            echo "<html><head><title>Erfolg</title></head><body style='font-family:Arial,sans-serif;text-align:center;padding-top:80px;background:#f8fafc;color:#0f172a;'>";
            echo "<div style='display:inline-block;background:#fff;padding:40px;border-radius:14px;box-shadow:0 4px 20px rgba(0,0,0,0.05);'>";
            echo "<h2 style='color:#22c55e;'>🎉 Eintrag erfolgreich freigeschaltet!</h2>";
            echo "<p>Der Beitrag ist ab jetzt live für alle Besucher sichtbar.</p>";
            echo "</div></body></html>";
            exit;
        } else {
            header("Content-Type: text/html; charset=UTF-8");
            die("<h3>Ungültiger Freischalt-Code.</h3>");
        }
    }

    // Fall B: Einträge für das Gästebuch laden (Prüfung gegen das Admin-Passwort)
    $isAdmin = false;
    if (isset($_GET['adminCheck']) && $_GET['adminCheck'] === $apiPassword) {
        $isAdmin = true;
    }

    if ($isAdmin) {
        $stmt = $db->query("SELECT * FROM entries ORDER BY created_at DESC");
    } else {
        $stmt = $db->query("SELECT * FROM entries WHERE status = 1 ORDER BY created_at DESC");
    }
    $entries = $stmt->fetchAll(PDO::FETCH_ASSOC);
    echo json_encode(['success' => true, 'entries' => $entries]);
    exit;
}

// 🛠️ POST-ANFRAGEN: Formular absenden, Löschen, Editieren, Login prüfen
$input = json_decode(file_get_contents('php://input'), true);

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    
    // Admin Login-Prüfung (Doppelklick-Event)
    if (isset($input['action']) && $input['action'] === 'checkLogin') {
        if (isset($input['password']) && $input['password'] === $apiPassword) {
            echo json_encode(['success' => true]);
        } else {
            echo json_encode(['success' => false, 'error' => 'Falsches Passwort!']);
        }
        exit;
    }

    // Eintrag löschen
    if (isset($input['action']) && $input['action'] === 'delete') {
        if (!isset($input['password']) || $input['password'] !== $apiPassword) {
            echo json_encode(['success' => false, 'error' => 'Nicht autorisiert!']);
            exit;
        }
        $stmt = $db->prepare("DELETE FROM entries WHERE id = ?");
        $stmt->execute([$input['id']]);
        echo json_encode(['success' => true]);
        exit;
    }

    // Eintrag editieren (Inline-Update)
    if (isset($input['action']) && $input['action'] === 'update') {
        if (!isset($input['password']) || $input['password'] !== $apiPassword) {
            echo json_encode(['success' => false, 'error' => 'Nicht autorisiert!']);
            exit;
        }
        $stmt = $db->prepare("UPDATE entries SET message = ? WHERE id = ?");
        $stmt->execute([$input['message'], $input['id']]);
        echo json_encode(['success' => true]);
        exit;
    }

    // Neuen Eintrag verarbeiten (Erhält status = 0)
    if (isset($input['name']) && isset($input['message'])) {
        $name = trim(htmlspecialchars($input['name']));
        $message = trim(htmlspecialchars($input['message']));

        if (empty($name) || empty($message)) {
            echo json_encode(['success' => false, 'error' => 'Bitte alle Felder ausfüllen.']);
            exit;
        }

        $stmt = $db->prepare("INSERT INTO entries (name, message, created_at, status) VALUES (?, ?, ?, 0)");
        $timestamp = date('Y-m-d H:i:s');
        $stmt->execute([$name, $message, $timestamp]);
        $lastId = $db->lastInsertId();

        // Absicherung für Freischalt-Link bauen
        $approveHash = md5($lastId . $apiPassword);
        $approveLink = $websiteUrl . "guestbook-api.php?action=approve&id=" . $lastId . "&hash=" . $approveHash;

        $subject = "Neuer Gästebucheintrag von " . $name;
        $mailBody = "Hallo Admin,\n\nein neuer Eintrag wartet auf Freischaltung:\n\nName: $name\nNachricht:\n$message\n\nKlicke auf den folgenden Link, um den Eintrag sofort zu veröffentlichen:\n" . $approveLink . "\n\nGruß dein Server.";
        
        // Vollautomatische SMTP-Erkennungsschleife
        if (SMTP_PASS !== 'DEIN_SMTP_PASSWORT' && SMTP_PASS !== '') {
            sendHybridSMTP($adminEmail, $subject, $mailBody);
        } else {
            $headers = "From: no-reply@" . $_SERVER['HTTP_HOST'] . "\r\n" . "Content-Type: text/plain; charset=UTF-8";
            @mail($adminEmail, $subject, $mailBody, $headers);
        }

        echo json_encode(['success' => true]);
        exit;
    }
}

// 🌐 INTUATIVE SOCKET SMTP ENGINE
function sendHybridSMTP($to, $subject, $body) {
    $host = SMTP_CRYPT === 'ssl' ? 'ssl://' . SMTP_HOST : SMTP_HOST;
    $socket = @fsockopen($host, SMTP_PORT, $errno, $errstr, 10);
    if (!$socket) return false;

    function parseResponse($socket) {
        $res = "";
        while (($str = fgets($socket, 515)) !== false) {
            $res .= $str;
            if (substr($str, 3, 1) == " ") break;
        }
        return $res;
    }

    parseResponse($socket);
    fwrite($socket, "EHLO " . $_SERVER['SERVER_NAME'] . "\r\n");
    parseResponse($socket);

    if (SMTP_CRYPT === 'tls') {
        fwrite($socket, "STARTTLS\r\n");
        parseResponse($socket);
        stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT);
        fwrite($socket, "EHLO " . $_SERVER['SERVER_NAME'] . "\r\n");
        parseResponse($socket);
    }

    fwrite($socket, "AUTH LOGIN\r\n");
    parseResponse($socket);
    fwrite($socket, base64_encode(SMTP_USER) . "\r\n");
    parseResponse($socket);
    fwrite($socket, base64_encode(SMTP_PASS) . "\r\n");
    parseResponse($socket);

    fwrite($socket, "MAIL FROM: <" . SMTP_USER . ">\r\n");
    parseResponse($socket);
    fwrite($socket, "RCPT TO: <" . $to . ">\r\n");
    parseResponse($socket);
    fwrite($socket, "DATA\r\n");
    parseResponse($socket);

    $headers = "MIME-Version: 1.0\r\nContent-Type: text/plain; charset=UTF-8\r\n";
    $headers .= "From: <" . SMTP_USER . ">\r\nTo: <" . $to . ">\r\nSubject: =?UTF-8?B?" . base64_encode($subject) . "?=\r\n";
    
    fwrite($socket, $headers . "\r\n" . $body . "\r\n.\r\n");
    parseResponse($socket);
    fwrite($socket, "QUIT\r\n");
    fclose($socket);
    return true;
}
?>
bitte testen

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 14:44
von Tommy Herrmann
Habe gerade selbst gesucht - aber nichts gefunden -

--- warte

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 14:46
von Volker
sollte jetzt gehen ich habs getestet ;)

Re: Gästebuch Block

Verfasst: Di 9. Jun 2026, 14:52
von Tommy Herrmann
Scheint jetzt alles zu funktionieren. Ich habe auch nur meine SMTP-Daten eingetragen und oben die Schlampen-Mail so stehen gelassen.

Schön wäre natürlich noch eine Möglichkeit auch im Admin Panel einen Beitrag zusätzlich freischalten zu können. Das fehlt doch sehr.