Formularauswertung

  • Hallo,
    ich arbeite mit dem FW genesis und habe ein Template erstellt, das folgendermaßen aufgebaut ist:

    add_action( 'genesis_after_entry_content', 'append_content', 15 );
    function append_content() {
    ?>

    <style type="text/css">
    ...
    </style>

    <?php
    echo "Inputs:";
    foreach ($_POST as $key => $value) {
    echo $key . " = " . $value ;
    }
    ?>

    <form action="<?php $PHP_SELF; ?>" method="post">
    ....
    <input type="submit" value="Get license number">
    </form>

    <?php
    }
    genesis();

    Wieso werden im Codeabschnitt "Inputs" keine Feldinhalte nach dem Absenden (und dem Wiederaufrufen) der Seite ausgegeben? Ist das ein genesis-spezifisches Problem?

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Dein Input-Field (Submit) hat schon mal keinen Namen, und wenn das bei den anderen Feldern des Formulars ebenso ist, dann kommt da auch nichts an.

    PS: das ist kein WordPress-, sondern ein HTML/PHP-Problem

  • Du hast eine große Sicherheitslücke in deinem PHP Script.

    Die Faustregel lautet: den Daten, die vom Client an den Server geschickt werden, kann grundsätzlich nicht getraut werden. Es muss deshalb immer eine Validierung der Daten auf dem Server stattfinden. Eine Validierung nur im Client genügt nicht, da diese auch manipuliert werden kann.

    Du nimmst die $_POST Daten an und gibst die Inhalte per Echo aus...

    Mit offenen Augen träumen

  • uha hat die Lösung geliefert. Ich hatte bei den Feldern nur eine id-Eigenschaft aber keine name festgelegt.
    PS r23: das Formular wird nur intern genutzt ohne Datenbankabfrage

  • PS r23: das Formular wird nur intern genutzt ohne Datenbankabfrage

    Das spielt keine Rolle. In jeder Umgebung sollte jede Software möglichst gut abgesichert sein. Du hast dort ein richtig großes Loch aufgemacht. Wer sagt dir, dass in 5-6 Jahren dieser Code immernoch nur intern genutzt wird? Irgendwer öffnet es, ohne von dieser Sicherheitslücke zu wissen, das Netz nach außen. Oder jemand kopiert es von hier im Forum oder aus deiner Datei woanders hin und schon knallt es. Wenn man als Entwickler etwas Ehre hat, sollte man auf Hinweise dazu schon anders eingehen.

    Denn die Absicherung wäre so einfach. filter_input(), sanitize_text_field(), wp_unslash() wäre ein Anfang. Ich weiß nicht wieso man darüber erst noch reden muss?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!