WP setzt End-Tag in PHP-Code

  • Ich habe über den Editor eine Seite generiert, in der zunächst ein paar Daten abgefragt werden. Über den Submit-Button läuft dann ein PHP-Skript (mittels Woody Snippets-Plugin). Klappt alles.

    Ich will jetzt nach dem Submit die Nutzerdaten weiterhin in den Eingabefelder haben. Dazu habe ich wie folgt geschrieben:

    ...
    <td><input name="var_einkommen" type="text" value="<?php echo $_POST['var_einkommen']; ?>" placeholder="Jahreseinkommen in €" size="50"/></td>
    ...

    Wenn ich jetzt auf Aktualisieren klicke, setzt WP an den Ende des PHP-Codes ein End-Tag, also

    ...
    <td><input name="var_einkommen" type="text" value="<?php echo $_POST['var_einkommen']; ?/>" placeholder="Jahreseinkommen in €" size="50"/></td>
    ...

    Damit aber erkennt der Browser nicht mehr das Ende des PHP-Codes.

    Was tun?

    Mühsam ernährt sich das (Nichtinformatiker-)Eichhörnchen.

    • 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

  • Ich habe rumprobiert und jetzt folgende lösung gefunden - die aber auch nicht funktioniert:

    <td><input name="var_einkommen" type="text" value="<?php echo $_POST['var_einkommen']; ?&gt;" placeholder="Jahreseinkommen in €" size="50" pattern="[0-9].{,6}" maxlength="6" required/></td>

    Zwar wird jetzt kein End-Tag gesetzt, aber auch keine Daten übertragen. Stattdessen steht der unter value genannte Text im Feld. Er wird also gar nicht als PHP-Skript erkannt.

    Wie also kann man nach Submit verhindern, dass das Formular gelöscht wird oder alternativ die eingegebenen Daten wieder in die Input-Felder schreiben?

    Bin für jede Hilfe dankbar.

    AS

    Mühsam ernährt sich das (Nichtinformatiker-)Eichhörnchen.

  • Danke für den Hinweis, dann bau ich das mal so.

    Eine nachfrage zum Escaping und dem Link von Dir: Bedeutet das, dass man die Ausgabe immer als

    [PLAIN]echo esc_attr( $ausgabe );
    [/PLAIN]

    schreiben sollte? Ich dachte immer, urch solche Sicherheits-Fuctions müsse die Eingabe laufen, damit kein Code eingeschleust wird.

    AS

    Mühsam ernährt sich das (Nichtinformatiker-)Eichhörnchen.

  • Noch mal zurück zum ShortCode, ich komme daleider nicht weiter.

    ich habe ein eigenes Plugin angelegt. Dort steht drin

    function shortcode_function(){
    return '<?php echo $_POST['var_einkommen']; ?>'; }

    add_shortcode('shortcodetest', 'shortcode_function' );

    Auf der Seite habe ich das Inputfeld wie folgt geändert:

    <td><input name="var_einkommen" type="text" value=[shortcodetest] placeholder="Jahreseinkommen in €" size="50" pattern="[0-9].{,6}" maxlength="6" required/></td>

    Das ganze klappt aber nicht, da ich bereits das plugin nicht aktivieren kann. Ein fataler würde wohl ausgelöst.

    Was mache ich falsch?

    Mühsam ernährt sich das (Nichtinformatiker-)Eichhörnchen.

  • Der PHP-Code ist grob falsch, schau mal bei Google o.ä. nach PHP Grundlagen.

    Versuche es damit, bzw. besser gib das ganze Formular über den Shortcode aus und prüfe dabei, ob die $_POST Werte überhaupt vorhanden sind.

    PHP
    function shortcode_function() {
       return '"' . esc_attr( $_POST['var_einkommen'] ) . '"';
    }
    add_shortcode( 'shortcodetest', 'shortcode_function' );

Jetzt mitmachen!

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