Post Newline/Carriage return в качестве скрытого значения поля
-
21-08-2019 - |
Вопрос
Мне нужно публиковать многострочные данные через скрытое поле. Данные будут просматриваться в текстовой обработке после поста. Как я могу опубликовать возврат новой линии/перевозки в форме HTML?
Я пробовал r n, но это просто публикует фактические данные " r n"
<input type="hidden" name="multiline_data" value="line one\r\nline two" />
Есть ли способ сделать это?
Решение
На самом деле зависит от набора символов, но должен быть линейным корпусом и должен быть возвратом перевозки. Вы должны иметь возможность использовать их в атрибуте значения.
Другие советы
Вместо использования
<input type="hidden">
Попробуйте использовать
<textarea style="visibility:hidden;position:absolute;">
В то время как новые линии (возврат карет и линии) технически разрешены вu003Cinput> S. скрытый Государство, их следует избежать для совместимости со старыми браузерами. Вы можете сделать это, заменив все возвраты перевозки (\u000D
или же \r
) и все строки (\u000A
или же \n
) с проприетарными строками, которые распознаются вашим приложением, чтобы быть возвратом каретки или новой линии (а также сбежалась, если присутствует в исходной строке).
Простые сущности персонажей здесь не работают, из-за того, что не совместимые браузеры, возможно, знают
а также
являются новыми линиями и отбрасывают их из значения.
Пример
Например, в PHP, если вы были echo
Переданное значение Textarea, вы включите новички (и бесчисленную строку).
u003Ctextarea>Какой -то текст с включенным
и новая строка с r n как отправленное значениеu003C/textarea>
Однако в PHP, если бы вы были echo
ценность для ценность атрибутu003Cinput> тег, вы избежите новых линий со своими запатентованными струнами (например, \r
а также \n
) и избежать любых случаев ваших проприетарных строк в представленной стоимости.
u003Cinput type="hidden" value="Some text with a includedrnand a new linern as submitted value">
Затем, прежде чем использовать значение в другом месте (вставка в базу данных, электронная почта и т. Д.), Обязательно разведите представленное значение, если это необходимо.
Заверение
В качестве дальнейшего уверенности я спросил WhatWG, и Иана Хиксона, редактора HTML Spec в настоящее время, ответил:
Bfrohs Вопрос оu003Cinput type=hidden> - разрешены ли линейные подачи и возвраты перевозки в значении? Они специально запрещены в состоянии текста и состоянии поиска, но не упоминается для скрытого состояния. И, если нет, есть ли приемлемое решение HTML для хранения данных формы из Textarea?
Хикси Да, им разрешено // iirc // по установлению причинам, которые вы можете избежать их, хотя некоторые браузеры нормализуют их // Я забыл, исправили ли мы это или нет // в спецификации
Вы не говорите, для чего это или какая технология, которую вы используете, но вы должны знать, что вы не можете доверять скрытую полю, чтобы оставаться с Value = "Line One Line Two", потому что враждебный пользователь может вмешиваться с ним, прежде чем он будет отправлен обратно в пост. Поскольку вы ставите ценность вu003Ctextarea> Позже вы обязательно будете подвергаться, например, атаки сценариев поперечного сайта, если вы не проверяете и/или не дезинфицируете содержимое поля Multiline_data », прежде чем выписать его обратно.
При написании значения в скрытое поле и чтение его обратно, обычно лучше просто держать его на сервере, в качестве атрибута сеанса, или Pageflow, или все, что ваша среда обеспечивает, чтобы делать такие вещи.