Post Zeilenvorschub/Wagenrücklauf als hidden Feld mit dem Wert
Muss ich post-multi-line-Daten über ein verstecktes Feld. Die Daten werden angezeigt in einem textarea-nach der post. Wie kann ich einen Zeilenumbruch/Wagenrücklauf in das html-Formular?
Ich habe versucht, \r\n, aber, dass nur Beiträge, die die eigentlichen "\r\n" Daten
<input type="hidden" name="multiline_data" value="line one\r\nline two" />
Gibt es eine Möglichkeit, dies zu tun?
InformationsquelleAutor | 2009-03-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hängt vom Charakter set richtig, aber sollten die Zeilenvorschub-und sollte carriage return. Sie sollten in der Lage sein, um diese in das value-Attribut.
und
sind neue Linien, und wenn es falsch entfernt, neue Leitungen, es wird auch entfernen Sie alle vorkommen von
und
.InformationsquelleAutor Arnshea
Anstatt
<input type="hidden">
Versuchen Sie es mit
<textarea style="visibility:hidden;position:absolute;">
style="display:none;"
ist wohl mehr succintFormular-Elemente festgelegt
display:none
nicht immer vorgelegt. Ich bin mir nicht sicher, welche Browser zu tun und nicht Einreichendisplay:none
Felder, aber laut den Kommentaren unter dieser Antwort, der IE8 hat den nicht.InformationsquelleAutor orinetz
Während neue Zeilen (Carriage Return, & Line Feed) sind technisch erlaubt sich in <input>'s versteckt Zustand, sollten Sie maskiert werden, um die Kompatibilität mit älteren Browsern. Sie können dies tun, durch den Austausch aller Carriage Returns (
\u000D
oder\r
) und alle Zeilenumbrüche (\u000A
oder\n
) mit proprietären Zeichenketten erkannt, die durch Ihre Anwendung werden ein Wagenrücklauf oder Neue Zeile (und auch entgangen, wenn in der original-string).Beispiel
Beispielsweise in PHP, wenn Sie
echo
dem übergebenen Wert um eine textarea, müssten Sie die Zeilenumbrüche (und ohne Umschreibung string).Jedoch in PHP, wenn Sie
echo
den Wert der Wert Attribut eines <input> - tag, Sie würde entkommen, die neuen Linien mit Ihren eigenen Saiten (z.B.\r
und\n
), und entfliehen Sie alle Instanzen Ihrer proprietären strings in den übermittelten Wert.Dann auf, bevor Sie den Wert an anderer Stelle (beim einfügen in eine Datenbank, E-Mail, etc), werden Sie sicher, dass unescape den übermittelten Wert, wenn nötig.
Beruhigung
Als weitere Versicherung, bat ich die WHATWG, und Ian Hickson, Herausgeber der HTML-Spezifikation, die derzeit erwiderte:
InformationsquelleAutor 0b10011
Du nicht sagst, was das ist, oder welche Technik Sie verwenden, aber Sie müssen sich bewusst sein, dass Sie nicht Vertrauen können das versteckte Feld zu bleiben, mit value="Zeile eins
Zeile zwei", weil eine feindliche Benutzer manipulieren kann, bevor es gesendet wird, zurück in die POST. Da setzen Sie den Wert in einer <textarea> später, Sie wird auf jeden Fall Thema werden, zum Beispiel für cross-site-scripting-Attacken, es sei denn, Sie überprüfen und/oder desinfizieren Sie Ihre "multiline_data" - Feld Inhalt schreiben, bevor Sie es wieder heraus.
Beim schreiben einen Wert in ein hidden-Feld und Lesen Sie es zurück, ist es meist besser, nur halten Sie es auf dem server, als ein Attribut der session, oder pageflow, was Ihre Umwelt bietet, das zu tun diese Art der Sache.
InformationsquelleAutor Stephen P