Почему формы HTML конвертируют "& amp;" в "&"?
Я пытался выяснить, почему мои тщательно подготовленные "& amp;" фразы превращались в простые фразы "&". Я знал, что это происходит, но я не знал, происходило ли это, когда они передавались как часть SQL-запроса или где-то еще. Это довольно сложно, так как вы должны просмотреть источник, чтобы увидеть разницу!
В конце концов я обнаружил, где это происходит - в отправляемой HTML-форме (action="post"). У меня был
Я обнаружил, что когда форма была отправлена, значение было изменено на "палки и камни", в результате чего, когда значение было отправлено в запросе к базе данных, оно не смогло найти никаких результатов.
Я провел дальнейшие эксперименты и обнаружил, что это происходит с текстовыми и скрытыми вводами.
Мой вопрос: ПОЧЕМУ????? Это выглядит особенно глупо.
1 ответ
Последовательности побега следует интерпретировать, не зная намерений автора. Если бы я хотел значение как Foo " Bar
Я не могу сказать value="Foo " Bar"
потому что кавычки не будут совпадать. Вместо этого я должен был бы использовать value="Foo " Bar"
, Но что, если я буквально хочу Foo " Bar
? Это где &
приходит. Но чтобы избежать двусмысленности, система должна всегда переводить escape-последовательности. Так что если вы хотите буквальный &
, вы должны быть прямо об этом, как sticks & stones
,