Подскажите как правильно, оптимальнее выполнять все эти действия.
Когда то мне говорили что в БД надо писать инфу как есть используя 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 теги из строки.
Так что тут зависит всё от того - что ты хочешь хранить в БД, если это допустим гостевуха кулинарного сайта - то на кой там вообще теги?