Программирование => JavaScript & JScript => Тема начата: Kettel от 04 Апреля 2006, 22:04:43
Название: Двойные кавычки - как запретить?
Отправлено: Kettel от 04 Апреля 2006, 22:04:43
Есть в наличии веб-приложение со множеством форм и текстовых инпутов. Если в этих инпутах писать двойные кавычки, то форма передаёт только текст до них, т.е. если ввести при"вет то форма передаст только при
Вопрос: Как, прикладывая наименьшие усилия, избежать этой проблемы? Форм очень много, ставить валидацию на каждый текстовый блок займёт слишком много времени. Сделать какой-то универсальный скрипт проверки форм? Как? Буду признателен за любые идеи.
Название: Двойные кавычки - как запретить?
Отправлено: for_i_0 от 04 Апреля 2006, 22:08:29
Kettel \\ - если не ошибаюсь
Название: Двойные кавычки - как запретить?
Отправлено: Kettel от 04 Апреля 2006, 22:18:09
Update на примере
Если ввести при"вет получим такой код:
Разумеется, он интерпретируется как
То есть проблема решается убиранием кавычек:
Есть ли какие-то подводные камни при использовании такого подхода?
Название: Двойные кавычки - как запретить?
Отправлено: Kettel от 04 Апреля 2006, 22:25:12
Update
Нашёл подводный камень :) Если ввести несколько кавычек начинаются проблемы. Так что изначальный вопрос остаётся в силе.
Название: Двойные кавычки - как запретить?
Отправлено: for_i_0 от 04 Апреля 2006, 22:33:17
Kettel каким оброзом данные попадают в value="" ?
если вы имеете ввиду, что вы вводити с наружи тоесть в поле. Такое не может выводится никак.
если по средством какого либо языка(программирования) то придется их экранировать перед выводом в value="".
Название: Двойные кавычки - как запретить?
Отправлено: hanslinger от 05 Апреля 2006, 00:24:48
Kettel PHP FAQ: \\"Кавычки \\". Примечание: формы (http://phpfaq.ru/slashes#input)
Название: Двойные кавычки - как запретить?
Отправлено: CGVictor от 05 Апреля 2006, 01:13:31
hanslinger Исчерпывающе[off], сам только что хотел написать ;)[/off]
Тему закрываю. UPD: ОК, не закрываю, договорились.
Название: Двойные кавычки - как запретить?
Отправлено: Kettel от 06 Апреля 2006, 21:37:05
Со способом экранирования кавычек всё ясно; вопросов нет. Вопросы есть по способам массового применения экранирования в крупном приложении. Грубо говоря, придётся ли для каждого инпута делать обработчик с экранированием кавычек или есть способ как-то упростить работу? P.S. Прошу прощения за кривые формулировки.
Название: Двойные кавычки - как запретить?
Отправлено: CGVictor от 06 Апреля 2006, 22:04:48
Kettel
Цитировать
Kettel: для каждого инпута делать обработчик
На входе, или на выходе?
На входе: http://phpfaq.ru/slashes#off На выходе: да, каждый вывод.
Название: Двойные кавычки - как запретить?
Отправлено: for_i_0 от 07 Апреля 2006, 12:32:40
CGVictor а почему бы один раз не перебрать элементы массива и таким образом избежать оброботки каждого инпута ?
Название: Двойные кавычки - как запретить?
Отправлено: CGVictor от 07 Апреля 2006, 12:48:22
for_i_0 Какого массива? Где в дискуссии массив для вывода упоминается? А?
Название: Двойные кавычки - как запретить?
Отправлено: for_i_0 от 07 Апреля 2006, 13:26:18
CGVictor [OFF]согласен, опередил события.[/OFF] Я так и не дождался ответа на свой вопрос. Посчитав что данные поподают в value="" програмно, решил ответить.
[OFF]Усе молчу[/OFF]
Название: Двойные кавычки - как запретить?
Отправлено: Shade_Wolfen от 10 Апреля 2006, 17:45:14
Экранирование не для твоего случая, используй функцию htmlspecialchars() перед выводом переменной. Кстати ИМХО magic_quotes лучше не юзать, а обрабатывать значения уже в скрипте.
Название: Двойные кавычки - как запретить?
Отправлено: Boxa от 23 Мая 2006, 14:59:29
foreach($_POST AS $k=>$v){ $k=htmlspecialchars($k, ENT_QUOTES); } ?>