1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

WP setzt End-Tag in PHP-Code

Dieses Thema im Forum "Allgemeines" wurde erstellt von ASenna, 7. September 2019.

  1. ASenna

    ASenna Well-Known Member

    Registriert seit:
    20. Januar 2017
    Beiträge:
    133
    Zustimmungen:
    0
    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?
     
  2. ASenna

    ASenna Well-Known Member

    Registriert seit:
    20. Januar 2017
    Beiträge:
    133
    Zustimmungen:
    0
    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
     
  3. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.634
    Zustimmungen:
    1.778
  4. ASenna

    ASenna Well-Known Member

    Registriert seit:
    20. Januar 2017
    Beiträge:
    133
    Zustimmungen:
    0
    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

    echo esc_attr( $ausgabe );


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

    AS
     
  5. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.634
    Zustimmungen:
    1.778
    Lies einfach mal die verlinkte Seite zu esc_attr(), auch den Bereich User Contributed Notes.

    Weiterhin auch die generellen Hinweise im Codex, wie man WordPress welches Szenario abdeckt.
     
  6. ASenna

    ASenna Well-Known Member

    Registriert seit:
    20. Januar 2017
    Beiträge:
    133
    Zustimmungen:
    0
    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?
     
  7. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.634
    Zustimmungen:
    1.778
    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:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden