Автор Тема: Двойные кавычки - как запретить?  (Прочитано 8860 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Kettel

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 60
  • +0/-0
  • 0
    • Просмотр профиля
Двойные кавычки - как запретить?
« : 04 Апреля 2006, 22:04:43 »
Есть в наличии веб-приложение со множеством форм и текстовых инпутов.
Если в этих инпутах писать двойные кавычки, то форма передаёт только текст до них, т.е. если ввести
при"вет
то форма передаст только
при

Вопрос:
Как, прикладывая наименьшие усилия, избежать этой проблемы?
Форм очень много, ставить валидацию на каждый текстовый блок займёт слишком много времени.
Сделать какой-то универсальный скрипт проверки форм? Как?
Буду признателен за любые идеи.

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Двойные кавычки - как запретить?
« Ответ #1 : 04 Апреля 2006, 22:08:29 »
Kettel
\\ - если не ошибаюсь
[off]Безработный[/off]

Оффлайн Kettel

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 60
  • +0/-0
  • 0
    • Просмотр профиля
Двойные кавычки - как запретить?
« Ответ #2 : 04 Апреля 2006, 22:18:09 »
Update на примере

<input type="text" value="initial_value">

Если ввести
при"вет
получим такой код:
<input type="text" value="при"вет">
Разумеется, он интерпретируется как
<input type="text" value="при">

То есть проблема решается убиранием кавычек:
<input type="text" value=initial_value>

Есть ли какие-то подводные камни при использовании такого подхода?

Оффлайн Kettel

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 60
  • +0/-0
  • 0
    • Просмотр профиля
Двойные кавычки - как запретить?
« Ответ #3 : 04 Апреля 2006, 22:25:12 »
Update

Нашёл подводный камень :)
Если ввести несколько кавычек начинаются проблемы.
Так что изначальный вопрос остаётся в силе.

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Двойные кавычки - как запретить?
« Ответ #4 : 04 Апреля 2006, 22:33:17 »
Kettel
каким оброзом данные попадают в value="" ?

если вы имеете ввиду, что вы вводити с наружи тоесть в поле.
Такое не может выводится никак.

если по средством какого либо языка(программирования) то придется их экранировать перед выводом в value="".
[off]Безработный[/off]

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Двойные кавычки - как запретить?
« Ответ #6 : 05 Апреля 2006, 01:13:31 »
hanslinger
Исчерпывающе[off], сам только что хотел написать ;)[/off]

Тему закрываю.
UPD: ОК, не закрываю, договорились.
« Последнее редактирование: 06 Апреля 2006, 00:23:40 от CGVictor »
LJ: Backslashed life (rss)

Оффлайн Kettel

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 60
  • +0/-0
  • 0
    • Просмотр профиля
Двойные кавычки - как запретить?
« Ответ #7 : 06 Апреля 2006, 21:37:05 »
Со способом экранирования кавычек всё ясно; вопросов нет.
Вопросы есть по способам массового применения экранирования в крупном приложении. Грубо говоря, придётся ли для каждого инпута делать обработчик с экранированием кавычек или есть способ как-то упростить работу?
P.S. Прошу прощения за кривые формулировки.

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Двойные кавычки - как запретить?
« Ответ #8 : 06 Апреля 2006, 22:04:48 »
Kettel
Цитировать
Kettel:
для каждого инпута делать обработчик

На входе, или на выходе?

На входе: http://phpfaq.ru/slashes#off
На выходе: да, каждый вывод.
LJ: Backslashed life (rss)

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Двойные кавычки - как запретить?
« Ответ #9 : 07 Апреля 2006, 12:32:40 »
CGVictor
а почему бы один раз не перебрать элементы массива и таким образом избежать оброботки каждого инпута ?
[off]Безработный[/off]

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Двойные кавычки - как запретить?
« Ответ #10 : 07 Апреля 2006, 12:48:22 »
for_i_0
Какого массива? Где в дискуссии массив для вывода упоминается? А?
LJ: Backslashed life (rss)

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Двойные кавычки - как запретить?
« Ответ #11 : 07 Апреля 2006, 13:26:18 »
CGVictor
[OFF]согласен, опередил события.[/OFF]
Я так и не дождался ответа на свой вопрос. Посчитав что данные поподают в value="" програмно, решил ответить.

[OFF]Усе молчу[/OFF]
[off]Безработный[/off]

Оффлайн Shade_Wolfen

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 11
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Двойные кавычки - как запретить?
« Ответ #12 : 10 Апреля 2006, 17:45:14 »
Экранирование не для твоего случая, используй функцию htmlspecialchars() перед выводом переменной. Кстати ИМХО magic_quotes лучше не юзать, а обрабатывать значения уже в скрипте.

Оффлайн Boxa

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 17
  • +0/-0
  • 0
    • Просмотр профиля
    • http://xxs.ru
Двойные кавычки - как запретить?
« Ответ #13 : 23 Мая 2006, 14:59:29 »

<?
foreach(
$_POST AS $k=>$v){
 
$k=htmlspecialchars($kENT_QUOTES);
}
?>

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28