![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Alexey007 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 30.3.2007 Репутация: 1 Всего: 1 |
Вообщем делаю гостевую книгу, и мне нужно чтоб никто не мог написать html теги.
|
|||
|
||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 32 Всего: 69 |
strip_tags() и поиск
-------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
либо strip_tags сразу после ввода(как и подсказал -=Ustas=-)
либо htmlspecialchars перед выводом уже сохраненного. вызывать htmlspecialchars перед выводом все равно придется(потому как надо будет заэкранировать "<",">","&" и другие), потому, в принципе, можно использовать только htmlspecialchars перед выводом, а хранить в неизменном виде(мало ли, может пригодится, чтоб доказывать злонамеренную деятельность горе-хакера |
|||
|
||||
| Alexey007 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 30.3.2007 Репутация: 1 Всего: 1 |
skyboy, strip_tags не подойдет, т.к. если тег случайно забыли закрыть, то удалится весь последующий текст. Поэтому выбираю htmlspecialchars.
Помогите пожалуйста сделать таблицу Options в базе данных. Нужно поле, в котором включается и отключается запрет тегов. Как правильно сделать? |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
||||
|
||||
| Alexey007 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 30.3.2007 Репутация: 1 Всего: 1 |
как?
Там же просто КУЧА всяких тегов... и как знать где именно закрывать? Можно конешно сделать на проверку.. сколько есть < и > |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
создаешь стек. в него пихаешь открывающие теги и вынимаешь закрывающие. в конце документа для всех тегов, оставшихся в стеке(не было соотвествующих закрывающих) генерируешь закрывающие и дописываешь в документ.
единственное: если в тексте появляются пересекающиеся пары(например: <b><u></b></u>) то их надо "выправлять". например, в моем примере "не принимать в расчет" тег </b> и просто его проигнорировать(несоотвествие порядка), потому в конце документа придется собственноручно добавить </b>. Впрочем, этот подход хорош только для "обучения", потому что велосипед. С квадратными колесами: strip_tags НЕ обрезает аттрибуты тегов, которые ему сказано не выбрасывать. Т.е. всякие javascript - обработчики на onclick,onmousemove etc остаются вместе с тегами. А это уже - точно никому не надо. Так что переходит на BBS коды(всякие так "","" и прочие - хотя бы на этом форуме глянь) и при выводе уже заменяй то же + на <b> + </b>. Решается сразу две проблемы: 1. Только теги, которые сам определишь, будут использоваться. 2. никаких javascript-обработчиков |
|||
|
||||
| Alexey007 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 30.3.2007 Репутация: 1 Всего: 1 |
ничего не понял.
можешь показать на конкретном примере? |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
Добавлено @ 19:17 то был бредне-рационализм. меня всегда в плохое настроение тянет строить велосипеды. Добавлено @ 19:18 если ты говорил не про стек и "ручную" обработку тегов, а про BBS-коды, то посмотри хотя бы на этом форуме ;) Добавлено через 8 минут и 1 секунду впрочем, и BBS я зря приплел - как я понял, тебе вообще форматирование не надо. Ни жирный шрифт, ни красные буквы... и в самом деле - только special_chars при выводе и всё... Это сообщение отредактировал(а) skyboy - 25.4.2007, 19:19 |
|||
|
||||
| cereza |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 1.4.2007 Репутация: нет Всего: нет |
я новенький не судите строго но я бы сделал через str_replace()
замена к примеру html,div и так далее... |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
||||
|
||||
| Alexey007 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 30.3.2007 Репутация: 1 Всего: 1 |
skyboy, < будет очень портить вид(
Добавлено через 5 минут и 14 секунд Кароче мне надо так Если в поле есть теги - вошли все нафиг, добавлять не буду, убирайте, горе-хакеры Если нет - Добро пожаловать. Добавляю ваш комент Так и ещё ОЧ. важно.. чтобы эту функцию модно было включать и отключать, т.е. чтою в БД была таблица, которая отвечала за активность или неактивность отключения тегов. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
||||
|
||||
| Alexey007 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 30.3.2007 Репутация: 1 Всего: 1 |
Сори за оффтоп: А это меньше?
А гл. задача - см. сверху |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
да. насколько мне помниться, мнемокод для символа меньше: в браузере будет отображаться "<", т.е. по-человечески, но никакой здравомыслящий браузер не будет работать с "<div>" как с тегом "<div>" В принципе, htmlspecialchars и меняет много разных символов(&,<,>,",') на их мнемокоды вида "&...;", что никак не влияет на отображение, зато эти символы уже не будут считаться "управляющими". Вот только в сравнении с htmlspecialchars применение str_replace может увеличить скорость... Правда, и грабли там могут быть ладно, забей. юзая htmlspecialchars |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |