Здравствуйте, объясните плиз такую вот вещь. Пришедшую инфу от юзера (POSTом) по всем правилам нужно, как минимум пропустить через htmlspecialchars. Для того, что исключить HTML теги, однако существуют еще [bb] теги, когда POSTом стараются отправить ява скрипты и т.д. Однако, все они так или иначе привязаны к: <>{}[], почему нельзя просто сделать PHP: ereg_replace("[<>\]\[\{\}]","",$_Post['name']) Чтоб исключить формирование этих тегов и запуск их браузером? Даже для БД существование двойных кавычек или одинарных, или знаков !$*"|/\ бесполезно если стоит "'".mysql_real_escape_string($_POST['name'])."'" Или я что то недопонимаю???[/php][/code]
например, юзер отправляет в текстовом поле следующее: $str = 'аываыаыуа23424 " <script> dsdwd [ b]dada[ /b]$#%#d ddd...';//здесь $str - переменная из POST взята Допустим, тебе надо этот текст выводить потом гдето, например, это комментарий. Проблема в том, что там есть и бб-коды, которые нужно при выводе заменять. Делаем следующее: //здесь $str - переменная, взятая уже из базы. То есть выводим сохраненный текст $str = htmlspecialchars(stripslashes($str));//все теги не работают уже, но бб - сохранены затем регуляркой меняем все [ b][ /b] на <strong></strong>; выводим через обычное echo $str; в итоге - на экран будут выведены те "злобные" теги, но они не будут работать (видно будет что ктото хотел навредить), но обычные бб - отработаются. Но перед вставкой в базу в любом случае юзай mysql_real_escape_string, святую воду, осиный кол и чеснок.
Апельсин Спасибо, , а почему не заменить [] и <> на "" - пустое место. Если это например страничка регистрации, там ни bb ни HTML код ...ненужен...
смотря какое поле и какие задачи. можно перед вставкой вырезать все теги <>, тогда текст будет уже "безопасным", при выводе из базы. бб-теги вырезать незачем в принципе, это обычный текст, если его специально не обрабатывать (регулярками). Например, нужно вырезать тупо все лишнее - юзай stripslashes() -> strip_tags() -> mysql_real_escape_string -> echo $text на выходе если бб будешь обрабатывать, значит strip_tags() - юзаешь по желанию, но если без него нужно юзать htmlspecialchars() и обрабатывать сами бб-теги. разница в том, что при strip_tags() в тексте у тебя вообще не будет, например, тегов <script>, ф-я вырезает их. А при htmlspecialchars() - оставляет, просто заменяет опасные символы (<>, например) на их сущности (код символов) и этим делает их нерабочими, но выводятся на экран.
Ensiferum ...еще надо удалять остановлюсь все же на ereg_replase() пусть останутся куски неработающие без скобок, пусть знают мощь регулярки враги! спасибо...