Frage

Ich muss Multi-Line-Daten über ein verstecktes Feld veröffentlichen. Die Daten werden in einem Textbereich nach dem Beitrag betrachtet. Wie kann ich eine Neu-/Wagenrendite im HTML -Form veröffentlichen?

Ich habe es ausprobiert, aber das veröffentlicht nur die tatsächlichen " r n" -Daten

<input type="hidden" name="multiline_data" value="line one\r\nline two" />

Gibt es eine Möglichkeit, dies zu tun?

War es hilfreich?

Lösung

Hängt wirklich von dem Charakter -Set ab, sollte aber Linefeed sein und sollte eine Kutschenrendite sein. Sie sollten in der Lage sein, diese im Wert -Attribut zu verwenden.

Andere Tipps

Anstatt zu verwenden

<input type="hidden">

Versuchen Sie es zu verwenden

<textarea style="visibility:hidden;position:absolute;">

Während neue Linien (Wagenrückgabe- und Leitungsfutter) technisch gesehen zulässig sindu003Cinput> 's versteckt Staat, sie sollten für die Kompatibilität mit älteren Browsern entkommen. Sie können dies tun, indem Sie alle Wagenrenditen ersetzen (\u000D oder \r) und alle Linienfeeds (\u000A oder \n) mit proprietären Zeichenfolgen, die von Ihrer Bewerbung als Kutschrückgabe oder neuer Linie anerkannt sind (und auch entkommen, wenn sie in der ursprünglichen Zeichenfolge vorhanden sind).

Einfach Charaktereinheiten funktionieren hier nicht &#10; und &#13; sind neue Linien und entziehen sie vom Wert.

Beispiel

Zum Beispiel in PHP, wenn Sie zu tun würden echo Der übergebene Wert an einen Textbereich, Sie würden die Newlines (und die unablässige Zeichenfolge) einschließen.

u003Ctextarea>Ein Text mit einem enthalten
und eine neue Linie mit r n als eingereichter Wertu003C/textarea>

In PHP jedoch, wenn Sie zu tun würden echo der Wert für die Wert Attribut von anu003Cinput> Tag, Sie würden den neuen Zeilen mit Ihren proprietären Saiten entkommen (z. B. \r und \n) und entkommen alle Fälle Ihrer proprietären Zeichenfolgen im eingereichten Wert.

u003Cinput type="hidden" value="Some text with a includedrnand a new linern as submitted value">

Bevor Sie den Wert an anderer Stelle verwenden (in eine Datenbank einfügen, E -Mails usw. einfügen), sollten Sie den eingereichten Wert gegebenenfalls unbedingt entfernen.

Beruhigung

Als weitere Beruhigung fragte ich den Whatwg, und Ian Hickson, Herausgeber der HTML -Spezifikation, antwortete derzeit:

bfrohs Frage überu003Cinput type=hidden> - Sind Line-Feeds und Wagenrenditen im Wert zulässig? Sie sind ausdrücklich im Textzustand und im Suchstatus nicht zugelassen, aber es wird keine Erwähnung für den versteckten Zustand angegeben. Und wenn nicht, gibt es eine akzeptable HTML -Lösung zum Speichern von Formulardaten aus einem Textbereich?

Hixie Ja, sie sind erlaubt // IIRC // Aus den alten Gründen möchten Sie ihnen jedoch entkommen, da einige Browser sie normalisieren // Ich vergesse, ob wir das behoben haben oder nicht // in der Spezifikation

Quelle

Sie sagen nicht, wofür dies ist oder für welche Technologie Sie verwenden, aber Sie müssen sich bewusst sein, dass Sie dem versteckten Feld nicht vertrauen können, um mit Value = "Zeile eins Zeile zwei" zu bleiben, da ein feindlicher Benutzer manipuliert kann damit, bevor es in die Post zurückgeschickt wird. Da setzen Sie den Wert in au003Ctextarea> Später unterliegen Sie auf jeden Fall beispielsweise den Skriptangriffen von Site -Skripts, es sei denn, Sie überprüfen und/oder sanieren Sie Ihren Feldinhalt "multiline_data", bevor Sie es wieder herausschreiben.

Wenn Sie einen Wert in ein verstecktes Feld schreiben und zurücklesen, ist es normalerweise besser, ihn als Attribut der Sitzung oder PageFlow auf dem Server zu halten oder was auch immer Ihre Umgebung bietet, um diese Art von Dingen zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top