jan: Datenverlust mit hiddenfield

Hallo!

Eins vorweg: ich habe gerade schonmal zu diesem Thema was gepostet aber keinen Eintrag in "Neue Nachrichten" gesehen - deshalb erstmal SORRY, wenn hier das Thema zum zweiten mal auftaucht.

Das Vorhaben:
Ich möchte ein Skript (mit PHP&MySQL unter HTML) für einen Newsletterschreiben. Ist soweit auch alles fertig, wenn da nicht dieses Problem wäre...

Das Problem:
Ich schreibe Daten (zwei miteinander verbundene Variableninhalte) in ein Hiddenfield. Das sieht wie folgt aus...

<input name="nachricht1" type="hidden" value="<?php echo $news['TITEL']." ".$news['NEWS'];?>">

Gebe ich diese Variablen testweise mit echo aus, dann steht auch exakt das drin, was ich möchte. Lese ich die Variablen im nächsten Schritt (nach dem Übergeben der Formulardaten) mit $_POST aus, so steht hier nur noch ca. ein drittel des Inhaltes drin (ca. die ersten 280 Zeichen des Textes)...

<div align="left"><font face="Arial"><?php echo $_POST['nachricht1'];?></font></div>

Die Frage:
Was habe ich falsch gemacht? Gibt es für Hiddenfields eine Längenbegrenzung (habe darüber nichts nachlesen können)?

Vielen Dank für alle Hilfen,

JAN

  1. Hallo JAN,

    schau dir doch mal den Quellcode des Dokumentes an, bevor du den "absenden" Knopf drückst. Sind die Werte in den hidden Feldern korrekt angegeben? - hast du die Daten vorher entsprechend behandelt (Was passiert, wenn " in deinen Daten vorhanden sind?)

    Haben die hidden Felder evtl. das Attribut maxlength gesetzt (wobei ich ehrlich gesagt gar nicht weiss, ob sowas möglich oder auch sinnvoll ist)

    Sind jetzt nur zwei Vorschläge, die mir auf die Schnelle so einfallen...

    Liebe Grüße mbr

    1. Hallo mbr,

      das war ein Volltreffer von Dir:

      Was passiert, wenn " in deinen Daten vorhanden sind?

      Daran habe ich echt nicht gedacht.

      Vielen, vielen Dank!

      1. echo $begrüßung;

        das war ein Volltreffer von Dir:

        Was passiert, wenn " in deinen Daten vorhanden sind?
        Daran habe ich echt nicht gedacht.

        Wann immer du Daten in einen anderen Kontext bringst, musst du sie dem Kontext entsprechend behandeln, was meist darauf hinausläuft, Zeichen mit besonderer Bedeutung in diesem neuen Kontext zu entschärfen (maskieren). Für den Kontext HTML gibt es die PHP-Funktion htmlspecialchars(), die sich um die HTML-eigenen Zeichen kümmert.

        Andere ebenso häufig auftretende wie gern übersehene Kontextwechsel sind:

        • Daten in SQL-Statements einfügen
        • Daten in URLs einfügen
        • URLs in HTML einfügen (& muss als &amp; notiert werden)

        echo "$verabschiedung $name";