Я не хочу принимать теги HTML. Я думаю, что я должен по крайней мере использовать strip_tags ()
Возможно, но не в том случае, если вы хотите, чтобы люди могли вводить символы / <’/‘> ’, которые означают« меньше и больше »и не имеют ничего общего с тегами.
При вводе для полей с произвольным текстом вам не захочется отфильтровывать намного больше, чем контрольные символы без перевода строки (которые вы обычно нигде не хотите), и, если вы используете UTF-8, недопустимо / избыточные последовательности.
Затем, когда вы выводите значение обратно на страницу, вы, конечно же, не забываете использовать htmlspecialchars (), чтобы ‘<’ экранировалось до ‘& lt;’ и отображалось на экране как литерал ‘<’, верно? Вам необходимо использовать htmlspecialchars () каждый раз, когда вы выводите текстовое значение в HTML в шаблоне, независимо от того, получена ли эта строка из формы, базы данных или где-то еще. </p>
Для полей без свободного текста, где вы хотите, чтобы весь ввод соответствовал определенному ограниченному формату, тогда да, регулярное выражение может быть хорошим способом для сопоставления с этим.
и addlashes ().
addlashes () - почти всегда неправильная вещь. Хорошее эмпирическое правило: не используйте это.
addlashes () не подходит для экранирования SQL, поскольку он не соответствует фактическому формату экранирования строки SQL, поэтому вы можете создавать строки, которые по-прежнему опасны при использовании аддешлаша. Когда вы используете MySQL, вы должны использовать вместо этого mysql_real_escape_string (). Другие базы данных имеют свои собственные функции экранирования. Используйте их (или, проще, используйте параметризованные запросы, чтобы вам вообще не приходилось экранировать текст в SQL).
(addlashes () не подходит для выхода из HTML, потому что он вообще не пытается ничего делать со специальными символами HTML. Это не то, для чего он.)
В любом случае, попытка справиться с выходом-выходом на этапе фильтрации входов является обратной. Вместо этого сохраните все строки, которые являются внутренними для вашего приложения, в виде простого текста и избегайте их при выходе из приложения: mysql_real_escape_string, когда они собираются принять участие в запросе SQL, htmlspecialchars (), когда они собираются на страницу HTML и т. д.