Gruber Hannes: Hochkomma in Textarea

hallo,

wieso werden doppelte hochkommas im textare immer ein backslash vorangestellt obwohl ich gar nichts mache?

ich gebe in einer textarea folgenden wert ein: Hallo mein Namen ist "Hannes"
...
<textarea rows="7" name="aus" cols="45"><?= $ausgabe ?></textarea>
...

wenn ich dies nun wieder über php ausgeben steht vor dem hochkommas ein backslash - wie kann man das umgehen:
Hallo mein Namen ist "Hannes"

danke
hannes

  1. Hallo Hannes!

    wenn ich dies nun wieder über php ausgeben steht vor dem hochkommas ein backslash - wie kann man das umgehen:
    Hallo mein Namen ist "Hannes"

    Das ist doch wunderbar. Sonst würde bei einer eventuellen Stringverkettung innerhalb Deines Scriptes der übergebene Wert natürlich Chaos anstellen können. Oder was noch viel schlimmer wäre Deine Angaben manipulieren.

    Zur Wiederausgabe kannst du mittels stripslashes die führenden Slashes wieder entfernen. EIn schönes Beispiel an dem man merkt, dass man sich  _bevor_ man anfängt serverseitige Scripte auszuführen, Gedanken machen sollte, was man damit alles tatsächlich anstellen kann.

    Schönen Gruß

    Afra

    1. Hallo Holger,

      Hallo mein Namen ist "Hannes"
      Das ist doch wunderbar.

      Nein, das ist schrecklich.

      Sonst würde bei einer eventuellen Stringverkettung innerhalb Deines Scriptes der übergebene Wert natürlich Chaos anstellen können.

      Nein, Stringverkettung ist kein Problem.

      Oder was noch viel schlimmer wäre Deine Angaben manipulieren.

      Nur wenn die Zeichenkette einem weiteren Medium übergeben wird, das diese Zeichenkette interpretiert, dann kann es zu Problemen kommen, z.B. wenn diese Zeichenkette eine SQL-Anweisung darstellt, die an ein Datenbankmanagementsystem weitergereicht wird. Aber auch dann sind die Magic Quotes eine Katastrophe, weil es nicht nur MySQL gibt. Und Magic Quotes für MySQL nicht ausreichen.

      In ganz normalen PHP-Skripten sind die Magic Quotes einfach überflüssig und erfordern zusätzlichen Aufwand.

      Zur Wiederausgabe kannst du mittels stripslashes die führenden Slashes wieder entfernen.

      Ein schönes Beispiel an dem man merkt, dass man sich  _bevor_ man anfängt serverseitige Scripte auszuführen, Gedanken machen sollte, was man damit alles tatsächlich anstellen kann.

      Ein schönes Beispiel für den Mist, den die Magic Quotes anstellen. Natürlich sollte man sich vorher Gedanken machen, was man mit Eingaben anstellen kann. Natürlich sollte man Eingaben überprüfen.

      Quoten ist nur dann erforderlich, wenn es für die Ausgabe erforderlich ist. Ansonsten ist es ideal, wenn man mit den Rohdaten arbeiten kann. Das heißt, dass man zuallererst die Magic Quotes entfernen muss, wenn man auf Eingabedaten zugreift und dann, wenn man eine Ausgabe macht, spezielle Zeichen in der Ausgabe nötigenfalls mit der für die spezielle Art der Ausgabe korrekten Art und Weise maskiert.

      Magic Quotes ist jedenfalls dafür völlig ungeeignet, da es für einen ganz speziellen Anwendungsfall maskiert und dafür noch nicht einmal in geeigneter Weise. Für MySQL (und dafür sind die Magic Quotes eigentlich gedacht) verwendet man mysql_real_escape_string(). Beachte dort die Anmerkungen zu Magic Quotes.

      Freundliche Grüße

      Vinzenz

  2. Hallo Hannes,

    wieso werden doppelte hochkommas im textare immer ein backslash vorangestellt obwohl ich gar nichts mache?

    Du bist ein armes Opfer der Magic Quotes. Glücklicherweise haben die Entwickler von PHP inzwischen eingesehen, dass Magic Quotes eine schlechte Idee waren und werden diese wieder abschaffen. In der Zwischenzeit könntest Du nach dem Handbuch, Abschnitt Disabling Magic Quotes vorgehen. Tut mir leid, wenn Englisch ein Problem darstellen sollte, aber die Doku ist anscheinend nicht auf Deutsch verfügbar.

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz!

      Du bist ein armes Opfer der Magic Quotes. Glücklicherweise haben die Entwickler von PHP inzwischen eingesehen, dass Magic Quotes eine schlechte Idee waren und werden diese wieder abschaffen.

      Naja, sie (die magischen Quotes) haben zumindest bewirkt, dass der Nutzer bemerkt, dass man die Quotes irgendwie kaschieren muss. Man kann dies natürlich auch anders lösen.

      Schönen Gruß

      1. echo $begrüßung;

        Naja, sie (die magischen Quotes) haben zumindest bewirkt, dass der Nutzer bemerkt, dass man die Quotes irgendwie kaschieren muss. Man kann dies natürlich auch anders lösen.

        Meiner Beobachtung nach ist das Gegenteil der Fall. Durch den Automatismus fallen die automatisch maskierten Quotes bei 0815-Scripten, die die Daten sofort in eine Datenbank schreiben, nicht weiter auf. Erst wenn man noch andere Dinge anstellen möchte, wie beispielsweise ein Affenformular verwenden möchte, fallen gelegentlich die zusätzlichen Backslashes unangenehm auf. Das passiert dann meist erst zufällig im laufenden Betrieb, weil sich der Anfänger selten die Zeit nimmt, sein eigenes Script mit allem möglichen Unsinn zu bombardieren, um somit solche Schwachstellen zu finden.

        echo "$verabschiedung $name";

        1. Hallo dedlfix.

          Meiner Beobachtung nach ist das Gegenteil der Fall. Durch den Automatismus fallen die automatisch maskierten Quotes bei 0815-Scripten, die die Daten sofort in eine Datenbank schreiben, nicht weiter auf. Erst wenn man noch andere Dinge anstellen möchte, wie beispielsweise ein Affenformular verwenden möchte, fallen gelegentlich die zusätzlichen Backslashes unangenehm auf.

          Jawohl, so ist\\\\'s!

          Einen schönen Sonntag noch.

          Gruß, Mathias

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          debian/rules
          1. echo $begrüßung;

            Jawohl, so ist\\\\'s!

            Nö, da ist ein \ zu wenig.

            echo "$verabschiedung $name";

            1. Hallo dedlfix.

              Jawohl, so ist\\\\'s!

              Nö, da ist ein \ zu wenig.

              Und schon wurde die Anwendung lahm gelegt.

              Einen schönen Sonntag noch.

              Gruß, Mathias

              --
              sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
              debian/rules