При генерации вывода HTLM (как вы делаете, чтобы получить данные в поля формы, когда кто-то пытается редактировать сообщение, или если вам нужно повторно отобразить форму, потому что пользователь забыл одно поле, для экземпляр) , вы, вероятно, будете использовать htmlspecialchars()
: он будет экранировать <
, >
, "
, '
и &
- в зависимости от параметров Вы даете это.
strip_tags
удалит теги, если пользователь ввел некоторые из них - и вы, как правило, не хотите, чтобы что-то набранное пользователем просто исчезало ;-)
По крайней мере, не для поля «содержимое» : -)
После того, как вы получили то, что пользователь ввел в форму (т. Е. Когда форма была отправлена) , вам необходимо экранировать ее перед отправкой в БД.
Вот где такие функции, как mysqli_real_escape_string
, становятся полезными: они экранируют данные для SQL
Возможно, вы также захотите взглянуть на подготовленные утверждения, которые могут вам немного помочь ;-)
с mysqli - и с PDO
Вы не должны использовать что-либо подобное addslashes
: выход из него не зависит от ядра СУБД; Лучше / безопаснее использовать функцию, которая подходит для движка (MySQL, PostGreSQL, ...) , с которым вы работаете: он будет точно знать, что и как избежать.
Наконец, для отображения данных на странице:
- для полей, которые не должны содержать HTML, следует использовать
htmlspecialchars()
: если пользователь вводил теги HTML, они будут отображаться как есть, а не вводиться как HTML.
- для полей, которые могут содержать HTML ... Это немного сложнее: вы, вероятно, захотите разрешить только несколько тегов, а
strip_tags
(который может это сделать) на самом деле не до задача (это позволит атрибуты разрешенных тегов)
- Возможно, вы захотите взглянуть на инструмент под названием HTMLPUrifier : он позволит вам указать, какие теги и атрибуты должны быть разрешены - и он генерирует действительный HTML, что всегда приятно ^^
- Это может занять некоторое время для вычисления, и вы, вероятно, не захотите заново генерировать этот HTML каждый раз, когда он должен отображаться; так что вы можете подумать о том, чтобы сохранить его в базе данных (либо сохраняя только этот чистый HTML, либо сохраняя его и не чистый, в двух отдельных полях - может быть полезно, чтобы люди могли редактировать свои сообщения?)
Это всего лишь несколько указателей ... надеюсь, они помогут вам : -)
Не стесняйтесь спрашивать, если у вас есть более точные вопросы!