Forum Webscript.Ru

Программирование => 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);
}
?>