Publier le retour chariot / saut de ligne comme valeur de champ masqué
J'ai besoin de mettre plusieurs lignes de données par l'intermédiaire d'un champ caché. Les données seront considérés dans un textarea après le post. Comment puis-je afficher un retour à la ligne/retour chariot dans le formulaire html?
J'ai essayé \r\n mais qui vient de postes réels "\r\n" données
<input type="hidden" name="multiline_data" value="line one\r\nline two" />
Est-il un moyen de faire cela?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Dépend du jeu de caractères vraiment, mais devrait être de retour à la ligne et devrait être de retour chariot. Vous devriez être en mesure de les utiliser dans l'attribut value.
Au lieu d'utiliser
<input type="hidden">
Essayez d'utiliser
<textarea style="visibility:hidden;position:absolute;">
Tandis que de nouvelles lignes (Carriage Return & saut de Ligne) sont techniquement autorisé dans <input>'caché de l'état, ils doivent être échappés à des fins de compatibilité avec les anciens navigateurs. Vous pouvez le faire par le remplacement de tous les Retours Chariot (
\u000D
ou\r
) et tous les sauts de Ligne (\u000A
ou\n
) avec des chaînes qui sont reconnues par votre demande, un Retour Chariot ou une Nouvelle Ligne (et aussi échappé, s'il est présent dans la chaîne d'origine).Exemple
Par exemple, en PHP, si vous étiez à
echo
la valeur passée à un textarea, vous devez inclure les retours à la ligne (et non échappés de la chaîne).Cependant, en PHP, si vous étiez à
echo
la valeur de la valeur attribut d'un <input> tag, vous fuyiez les nouvelles lignes avec votre propriétaire des chaînes de caractères (par exemple\r
et\n
), et d'échapper à toutes les instances de votre propriété chaînes de la valeur soumise.Puis, avant d'utiliser la valeur ailleurs (insertion dans une base de données, e-mails, etc), assurez-vous de ne pas encoder la valeur soumises, si nécessaire.
Rassurer
Comme l'assurance, j'ai demandé le WHATWG, et Ian Hickson, rédacteur en chef de la spécification HTML actuellement, a répondu:
Vous ne dites pas ce que c'est ou ce que la technologie que vous utilisez, mais vous devez être conscient que vous ne pouvez pas faire confiance le champ caché de rester avec valeur="ligne d'un
ligne deux", car hostile à l'utilisateur peut la modifier avant qu'il soit envoyé par la POSTE. Puisque vous êtes de mettre la valeur dans un <textarea> plus tard, vous aurez certainement être soumis à, par exemple, cross site scripting attaques, à moins que vous vérifiez et/ou désinfecter votre "multiline_data" contenu du champ avant de l'écrire.
Lors de l'écriture d'une valeur dans un champ caché et en les lisant, il est généralement préférable de le garder sur le serveur, comme un attribut de la session, ou pageflow, ou quel que soit votre environnement de fournit pour faire ce genre de chose.