Achim Janowski: Variablenübergabe / maskierte Zeichen

Hallo!

Zu folgendem Problem habe ich leider nichts im Archiv gefunden...

In einem Formular übergebe ich ein <input...> an ein PHP-Script.

Dass Anführungszeichen " zu " werden, ist klar (auch wie man die Schrägstriche wegbekommt).

Nicht klar ist mir, warum auch die Eingabe " das Ergebnis " hervorruft.

Liegt das am Browser, der die Maskierung beim Absenden umwandelt, oder macht das PHP?

Denkanstöße wären nett...

Gruß, Achim

  1. hi,
    was sinf denn deine absichten ?
    mfg
    comunicout

    1. Hallo!

      was sinf denn deine absichten ?

      Hintergrundwissen...

      (ich weiß schon, wie ich aus dem " wieder ein " bekomme)

      Gruß, Achim

  2. Moin!

    Nicht klar ist mir, warum auch die Eingabe " das Ergebnis " hervorruft.

    Mir auch nicht. Was definierst du als "Eingabe"? Welcher Aktionsablauf ruft das hervor?

    Liegt das am Browser, der die Maskierung beim Absenden umwandelt, oder macht das PHP?

    Das zu klären wäre interessant.

    - Sven Rautenberg

    --
    ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
    1. Hallo!

      Mir auch nicht. Was definierst du als "Eingabe"? Welcher Aktionsablauf ruft das hervor?

      Es geht um ein hidden-Feld (Gesamtzusammenhang ist ein Formular, dessen Daten zur Überprüfung nochmals angezeigt werden; zur weiteren Verarbeitung werden sie in hidden-Feldern "gespeichert").

      Hab's jetzt mal getestet...

      Die aufrufende Datei:
      <form method="POST" action="ausgabe.php">
      <input type="text" name="beispieltext" value="" size="10">
      <input type="hidden" name="beispielhidden" value=""">
      <input type="submit" value="Senden">
      </form>

      im sichtbaren Feld habe ich """ eingegeben (ohne Anführungszeichen)

      Die Datei "ausgabe.php":
      <?php
      echo $_POST['beispieltext'];
      echo $_POST['beispielhidden'];
      ?>

      als $_POST['beispieltext'] wird " ausgegeben
      als $_POST['beispielhidden'] wird " ausgegeben

      Gruß, Achim

      1. Moin!

        als $_POST['beispieltext'] wird " ausgegeben
        als $_POST['beispielhidden'] wird " ausgegeben

        Und das ist vollkommen logisch!

        Der Browser kriegt als HTML-Quelltext im hidden-value " geliefert. Er setzt diese Angabe um in ein einzelnes "-Zeichen. Und schickt dies dann an den Server zurück, der es mit einem Backslash escaped.

        Wenn du hingegen etwas in das Eingabefeld eingibst, wird dies _keiner_ Umwandlung durch den Browser unterzogen, sondern kommt 1:1 an.

        Wenn du gerne " als Text deines Hidden-Feldes übergeben möchtest, mußt du value="&quot;" reinschreiben.

        Genauer gesagt: Wenn du in PHP den Inhalt der Variablen $test in den Value-Bereich schreiben willst, mußt du htmlspecialchars($test) an der jeweiligen Stelle ausgeben.

        Also: $test=""";
        echo 'value="'.htmlspecialchars($test).'"';

        Es hätte auch geholfen, wenn du testweise den Feldtyp von hidden auf text umgestellt hättest. Dann hättest du gesehen, was da genau gesendet wird.

        - Sven Rautenberg

        --
        ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
        1. Hallo!

          Es hätte auch geholfen, wenn du testweise den Feldtyp von hidden auf text umgestellt hättest. Dann hättest du gesehen, was da genau gesendet wird.

          Hab ich halt zu spät gemacht... ;-)

          Aber danke für die Info, man lernt nie aus...

          Gruß, Achim