Вопрос № 85241: Добрый день, уважаемые экстперты.
У меня возникла проблема следующего плана, пользователь вводит в текстовое поле иформацию и при вводе он может ввести значек " и тут начинаются проблемы, после того как он делает submit форме, передаются д...
Вопрос № 85.241
Добрый день, уважаемые экстперты.
У меня возникла проблема следующего плана, пользователь вводит в текстовое поле иформацию и при вводе он может ввести значек " и тут начинаются проблемы, после того как он делает submit форме, передаются данные таким способом, например:
<input type="text" value="ООО "УТН-Восток", г. Донецк">
соответственно получаем только
ООО "УТН-Восток.
У меня вариант - обусловить, что если ему необходимо вводить " пусть использует ` , а при добавлении на сайт этой инфы я буду заменять на ", я решил на событие onkeyup подменять символы.
Проблема заключается в том, что я не знаю как мне получить значение или код нажатой пользователем клавиши!
Очень нуждаюсь в ответе! Если есть у в Вашей практике более легкие решения этого вопроса, прошу поделиться!
Отправлен: 03.05.2007, 12:48
Вопрос задал: Zotaper (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Талипов А Н
Здравствуйте, Zotaper!
Проблема ваша понятна, действительно существует похожий глюк, но возникающий на стороне сервера. Опишите пожалуйста подробнее вашу систему обработки данных в форме.
Когда я сталкнулся с подобной проблемой, в php мне просто пришлось мнемонизировать строку функцией
mysql_escape_string - мнемонизирует/Escape строку для использования в mysql_query.
Описание
string mysql_escape_string (string unescaped_string)
Эта функция мнемонизирует строку unescaped_string, чтобы её можно было передать функции
mysql_query().
а то в базу данных писалось х знает что. Функция похожа на:
addslashes - закавычивает строку слэшами.
Описание
string addslashes (string str)
Возвращает строку со слэшами перед символами, которые должны быть закавычены в запросах БД и т.п.. Это одинарная ('), и двойная (") кавычки, обратный слэш/backslash
Возвращает строку с вырезанными обратными слэшами (' становится ' и так далее). Двойные backslash становятся одинарными.
последняя функция во многих случаях не нужна, так как например echo вывидет текст нормально. А вот использование этих функций при обработке логина и пароля просто даже необходимо, иначе злой юзер, знающий тонкости, может здорово вам испаганить базу данных.
А теперь собственно JavaScript:
Метод escape
Описание
Кодирует объекты String для возможного чтения на всех компьютерах.
Синтаксис
escape(charstring)
Параметр charstring является объектом String для кодирования.
Примечание
Метод escape возвращает новый объект String в формате Unicode, перекодированный параметр charstring. Все пробелы, знаки пунктуации, спец-символы и другие
non-ASCII
символы заменяются кодом типа %xx, где xx - шестнадцатиричный код символа. Например, пробел преобразовывается в "%20."
Символы с кодом более 255 преобразовываются в формат %uxxxx.
Метод unescape
Описание
Декодирует объект String, закодированный при помощи метода escape.
Синтаксис
unescape(charstring)
Аргумент charstring является объектом String для декодирования.
Примечание
Метод unescape возвращает объект String, включающий содержание charstring. Все символы, закодированные в виде формата %xx, заменяются соответствующими символами
таблицы
ASCII.
Символы, закодированные в %uxxxx формате (Unicode), заменяются соответствующими символами Unicode.
Возможны и другие варианты с гет и пост запросами, но тут я уже молчу, так как, область мне незнакомая, и просто не хочу путать.
--------- Всё будет так, как должно быть, даже если будет иначе.
Ответ отправил: Талипов А Н (статус: 3-ий класс)
Ответ отправлен: 03.05.2007, 16:48 Оценка за ответ: 5 Комментарий оценки: Ставлю 5 за попытку мне помочь, спасибо за старания, я написал, что очень нуждаюсь в ответе, это значит он нужен был мне срочно, потому пришлось самому разбираться. Я же решил проблему, хотя как я подозреваю, что ее нет (я ее сам себе создал, но проверят подозрения буду уже в другой раз :-) ), так: на событие формы submit в нужных мне полях я функцией
replace класса string, заменяю " на " таким образом я избавился от гемороя :-) Но вот что касается события onkeyup всетаки хотелось бы услышать, как мне получить код нажатой клавиши (возможно в дальнейшем понадобится!)
Отвечает: Grigory
Здравствуйте, Zotaper!
Можно в коде заменять на \ и тогда все должно будет нормально работать, если я правильно понял, в чем проблема.
--------- Если хочешь быть счастливым - будь им! (Козьма Прутков)
Ответ отправил: Grigory (статус: Студент)
Ответ отправлен: 04.05.2007, 10:02