[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: mysql_real_escape_string и htmlspecialchars
Xes
Подскажите как правильно, оптимальнее выполнять все эти действия.
Когда то мне говорили что в БД надо писать инфу как есть используя mysql_real_escape_string, а выводить через htmlspecialchars.
Я не мог понять зачем, если можно сразу писать в БД проганяя перед этим через htmlspecialchars.
Понял почему когда начал хранить в БД не просто текст, а данные верстки таблицы например первый тег <td .......>, и данные виде JSON строки. Теперь при открытии данных в textarea возникают сложности как отличать одни кавычки от других ))
И вообще, пока не пробовал но при открытии JSON в textarea и последующем сохранении он сможет разобрать где кавычки структуры ДЖЕЙСОНА а где кавычки текста.

Цитата
["name" : "Текст с кав"ычкой"]



Вот теперь вопросы как это все делается, оптимально.

Как обробатывать формы.
Цитата
Сначачала проверяем правильность заполнения форм, если не верно прогоняем $_POST в цикле foreach и делаем htmlspecialchars($_POST['nnnn']) для каждого элемента после чего выводим обратно в форму. В форме у нас соответсвенно просто echo  $_POST['nnnn']

Так?


А как выводить содержимое страницы из БД.
Что каждую переменную в коде заключать в htmlspecialchars примерно следующим образом?
echo 'Текст текст'.htmlspecialchars($sqlrow['nnnn']).'Текст далее';
Текст таек<? echo htmlspecialchars($sqlrow['nnnn']); ?> Текст далее




Спустя 4 минуты, 33 секунды (31.10.2011 - 08:34) imbalance_hero написал(а):
Xes
ББ-коды, это в 99% случаев будет правильнее всего. Для себя я храню в чистом виде, поэтому вывожу без htmlspecialchars.
Либо в отдельных .tpl хранить содержание (внутреннее) страничек с разметкой.

Спустя 20 минут, 30 секунд (31.10.2011 - 08:54) Xes написал(а):
Цитата (imbalance_hero @ 31.10.2011 - 05:34)
Для себя я храню в чистом виде, поэтому вывожу без htmlspecialchars.

Например идет описание чего либо, там могут встречатся кавычки и и знаки < > ты что все их превращаешь в ББ-теги и пишешь в БД?

Вот как у меня шас.
Есть просто текст с описанием я проганяю его сразу через htmlspecialchars и сохраняю в БД. Вывод соответвенно просто значение ячейки без htmlspecialchars.

Есть данные которые хранится виде JSON строки, в данном случае юзер каждый элемент Джейсона вводит в свой textarea. Каждый элемент прогоняется через htmlspecialchars создается объект(массив) с получеными значениями который потом сохраняется в виде джейсон строки. Соответвенно обратный процес декодирование в массив и вывод элементов.

В Юзер панели у меня специализировано для каждого поля виде JSON строки сначала присходит разбор Джейсона а потом вывод каждого его элемента в свой texterea. При этом каждый элемент прогнан, и при сохранении опять проганяется через htmlspecialchars. Соответвенно при выводе чего либо я просто вывожу переменную без htmlspecialchars.

В админки я хотел схалявничеть, т.к. мне не интересно че там пишет юзер, просто посмотрел в texterea все содержимое ячейки (строку JSON) и сохранил, ну накрайняк я и в Джейсоне разбирусь где чо подправить.
Но вот тут то у меня проблема и возникла о которой я писал. Если прогонять через htmlspecialchars то кавычки разметки JSON пропадут. Если только через mysql_real_escape_string то те недопустимые символы в тексте появятся в БД и потом будут выведены. Тобишь не получается отделит разметку JSON от содержимого.

Так вот как решить данную проблему. Либо не ленится и писать админку такю же как юзер панель, тоесть разгребать JSON и выводит каждый его элемент в свое поле, и тогда все будет ок.
Либо еше как? Я про ББ теги не очень понял. Есть у меня некоторые моменты работы с ББ тегами типа [b] [p] [u] но как решить ту задачу что я описал с помощью онных чето не пойму.

Спустя 39 минут (31.10.2011 - 09:33) imbalance_hero написал(а):
Xes
Используй полностью ББ-теги, пропадёт вся проблема.

Спустя 2 часа, 55 секунд (31.10.2011 - 11:34) Xes написал(а):
Почитал на форуме про ББ коды, посмотрел конкурсы. Кароче я не понял как юзать ББ коды в моем случае. Хотел привести примеры кода но он коверкаются кавычки пропадают.
За отсутствием понимания как работать с ББ кодами допер делать htmlspecialchars перед выводом данных, для полей в админке, где я просматриваю джейсон строку тогда при сохранении данных из техстареа напрямую без преобразования они получаются в точности как были в БД.

Спустя 4 часа, 12 минут, 44 секунды (31.10.2011 - 15:47) Krevedko написал(а):
интересно, а как хранит тот же вордпресс ?
ведь там вводятся статьи вместе с хтмл -кодом и бб там не пахнет.

Спустя 3 часа, 22 минуты, 6 секунд (31.10.2011 - 19:09) imbalance_hero написал(а):
Krevedko
А ты сам посмотри, программист ты или кто.

Спустя 3 часа, 35 минут, 50 секунд (31.10.2011 - 22:45) Krevedko написал(а):
я - ленивый программист

Спустя 11 часов, 55 минут, 27 секунд (1.11.2011 - 10:40) killer8080 написал(а):
Цитата (Xes @ 31.10.2011 - 08:54)
Например идет описание чего либо, там могут встречатся кавычки и и знаки < > ты что все их превращаешь в ББ-теги и пишешь в БД?

Вот их как раз и нужно прогонять через htmlspecialchars, и не только для безопасности, но и для валидности html кода.

Спустя 18 минут, 11 секунд (1.11.2011 - 10:59) Игорь_Vasinsky написал(а):
htmlspecialcahrs() и mysql_real_escape_string() - это же абсолютно разные функции.

Первая - преобразует символы и может гарантировать, что JS написанный например в твоей гостевой под видом сообщения - будет выведен как текст и не будет исполняться

Вторая - экранирует спецсимволы, если строка будет использована в SQL запросе - тем самым предотвращая SQL-инъекции

есть ещё strip_tags() - а эта вообще удаляет все HTML и PHP теги из строки.


Так что тут зависит всё от того - что ты хочешь хранить в БД, если это допустим гостевуха кулинарного сайта - то на кой там вообще теги?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.