Roland: Frage zu stripslashes in Formularen...

Hallo zusammen!

Scheinbar gibt es einen Unterschied zwischen der Verarbeitung von Hochkommas in Strings und der Verarbeitung von Hochkommas in Formularfeldern wie Texteingabefelder.
Vielleicht kann mir jemand erklären, worin der genau besteht und wie ich folgende Routine löse:

Wenn ich zur Ausgabe des Strings
Dies 'ist' ein Test

folgendes eingebe:
echo stripslashes($anfrage['Titel']);

erhalte ich den kompletten String ohne Hochkommas.

Wenn ich das Ganze so lösen möchte, dass der String im Texteingabefeld steht
$speicher=stripslashes($anfrage['Titel']);
echo "<input type='text' size='60' name='Titel' value='$speicher'>";

...dann hört die Ausgabe des Strings im Eingabefeld bei
Dies

..auf.

Was muss ich abändern, damit es klappt?

  1. Was muss ich abändern, damit es klappt?

    Du hast ein problem, den richtigen Kontext zu erkennen - der Kontext deines Forumlarfelds bzw der Wert des value-Attributs ist HTML - stripslashes oder addslashes ist dabei herzlich unsinnig. htmlspecialchars ist wesentlich geeigneter.

    Dazu solltest du idealerweise folgenden Artikel lesen: http://aktuell.de.selfhtml.org/artikel/php/kontextwechsel/

    1. Vielen Dank, das hat mir weitergeholfen!

  2. Hello,

    Wenn ich zur Ausgabe des Strings
    Dies 'ist' ein Test

    folgendes eingebe:
    echo stripslashes($anfrage['Titel']);

    siehe: http://php.net/manual/en/security.magicquotes.php

    wenn Magic Quotes eventuell noch benutzt werden, dann:

    if (get_magic_quotes_gpc())
      {
         $eingabe = stripslashes($_POST['anfrage']['titel']);
      }

    echo htmlspecialchars($eingabe,ENT_QUOTES);

    Also erst die von PHP dazugemogelten "Magic Quotes" wieder entfernen, damit Du Rohdaten vorliegen hast, dann den Kontext auf HTML herstellen und ausgeben.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de