![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| DioNiR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 30.12.2006 Репутация: нет Всего: нет |
Проблема такова:
Есть POST запрос. Если я данные отфильтрую например
то все мои BBкоды сбиваются. Но это не одна фунция чем я фильтрую данные. Собствено как надо фильтровать данные из БД или в БД. При этом не затрагивая BBкоды? --------------------
Думали это конец? Ха, всё только начинается. |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
DioNiR, для самой БД вообще данные можно не фильтровать - главное, правильно составлять запрос, прослешивая строковые данные и не допуская данные от пользователя в управляющие элементы типа LIMIT. База умеет хранить что угодно, для нее не существует "опасных символов".
Htmlspecialchars имеет смысл только при выводе, для профилактики XSS и надругательств над дизайном. А что за bb-коды такие, которые от Htmlspecialchars ломаются? Что в них за символы из разряда спецсущностей - кавычки, что ли? -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| DioNiR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 30.12.2006 Репутация: нет Всего: нет |
ББ коды у меня заменяются на HTML код.
Поэтому htmlspecialchars вместо место того чтобы HTML. Он его фильтрует и выводит как обычный код. --------------------
Думали это конец? Ха, всё только начинается. |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
Так надо сначала делать htmlspecialchars, а только потом парсить bb-коды, логично? Не случайно ж для bb-кодов обычно выбирают символы, не пересекающиеся с HTML-спецсущностями...
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| DioNiR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 30.12.2006 Репутация: нет Всего: нет |
в том то и дело он изночально изменят символы:
< > " и т.д Что PHP код становится не читабельным. Если поптыатся изменить в обратном типо:
То HTML начинает выводиться не как код. --------------------
Думали это конец? Ха, всё только начинается. |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
DioNiR, можно коротенький пример данных с "испорченным PHP-кодом" до и после преобразования?
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| DioNiR |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 30.12.2006 Репутация: нет Всего: нет |
До преобазования:
После:
Собствено вот Функция:
--------------------
Думали это конец? Ха, всё только начинается. |
||||||
|
|||||||
| Хрипа |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 11.12.2006 Репутация: -6 Всего: нет |
в базу пишеш сразу с BB кодом..
перед показом пропускаешь через фукнцию фильтра. Ктомуже это позволит сделать редактирования сообщений. К примеру простейшая оработка $arr_match = array("b:"); $arr_match_close = array(":b"); for($m=0;$m<count($arr_match);$m++) if(eregi($arr_match[$m]."(.*)".$arr_match_close[$m],$db_message,$regs)){ $size = sizeof($regs); for($i=0;$i<$size;$i++) { $db_message = eregi_replace($arr_match[$m]."(.*)".$arr_match_close[$m],$arr_match[$m].$regs[$i].$arr_match_close[$m],$db_message ); } }else{Континью} } print nl2br($db_message); Чтонить типа такого )) Это сообщение отредактировал(а) Хрипа - 8.4.2007, 01:57 --------------------
<Вырезана, как не соответствующая правилам форума > |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
Ага. highlight_string, оказывается, сама по себе тоже заменяет спецсущности. Так что придется в строке 11 перед ней сделать обратную замену спецсущностей, что-то вроде такого...
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| DioNiR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 30.12.2006 Репутация: нет Всего: нет |
Работает почти как надо.
Только проблема стала другая. Из за чего всё и началась. Это сделать Подцветку кода. Для чего я и юзал фунцию highlight_string. --------------------
Думали это конец? Ха, всё только начинается. |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
Если юзать ее так, как в моем последнем посте (вместо просто highlight_string('$1', true) в строке 11), подцветка разве не работает?
Альтернативный вариант - сделать строчку 3 более "избирательной", наподобие такого:
А 11-ю вернуть как было. Наверное, так даже правильнее. Это сообщение отредактировал(а) SelenIT - 8.4.2007, 02:23 -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| DioNiR |
|
||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 30.12.2006 Репутация: нет Всего: нет |
Ну если вместо моего:
Вставить твой:
То будет ошибка:
Иммено на это строке. Если моё изменить и вставить вместо:
Твоё:
То работает без подцветки. А вообще SelenIT, куда и как вставить это я уже знаю. основы я понимаю и знаю. Это сообщение отредактировал(а) DioNiR - 8.4.2007, 02:27 --------------------
Думали это конец? Ха, всё только начинается. |
||||||||||
|
|||||||||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
DioNiR, еще все работает с подцветкой (только что проверил), если в варианте, который вызывал parse error, прослешить двойную кавычку
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| DioNiR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 30.12.2006 Репутация: нет Всего: нет |
Вот теперь работает отлично.
Кстате если спользовать твой вариант:
То он выводит не корекную подцветку. Если же использовать стандартную то всё норма. Жалко не достаточно постов у меня. Я бы поставил тебе бы + СПС тебе огромное. Это сообщение отредактировал(а) DioNiR - 8.4.2007, 02:35 --------------------
Думали это конец? Ха, всё только начинается. |
|||
|
||||
![]()
|
| Правила форума "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. |