Как хранить данные ‹textarea›, а также данные escape и return

Какой лучший маршрут для хранения данных в MySQL. С MySQL я должен просто использовать ТЕКСТ в качестве типа поля?

Также при использовании mysql_real_escape_string() с возвращаемыми значениями \r\n . Но должен ли я запускать на нем htmlentities() после этого?

И затем, когда я возвращаю данные на экран, я должен использовать NL2BR()?

Просто пытаюсь найти лучший маршрут для хранения этой информации.

Спасибо за помощь!


person Justin    schedule 11.07.2011    source источник


Ответы (2)


TEXT или TINYTEXT или что-то подобное должно подойти для хранения данных ASCII от пользователя. Если вам не нужно много места, вы можете подумать о VARCHAR

я думаю, что mysql_real_escape_string() экранирует символы, которые могут поставить под угрозу безопасность SQL-запроса (одинарная кавычка, двойная кавычка и т. д.), но не более того.

htmlentities() преобразует зарезервированные символы html, такие как ‹ и >, в их эквивалент в кодировке html и соответственно. Эти символы не опасны для SQL-запросов, поэтому вам, вероятно, не нужно экранировать их, если только вы не хотите отображать HTML-тег, введенный пользователем, в виде текста и не позволять ему интерпретироваться как HTML.

NL2BR() наверное тоже не надо.

Самое главное, ваше решение о том, когда использовать каждую из этих функций, будет зависеть от вашего конечного приложения. Вам могут понадобиться/хотеться некоторые, но не другие (хотя вам определенно следует использовать mysql_real_escape_string() )

person Noah Duncan    schedule 11.07.2011

На самом деле зависит от того, что вы пытаетесь сохранить. Для таких вещей, как имена пользователей, пароли и т. д., вы можете использовать varchar. Но если вы храните длинный текст, такой как сообщения новостей или данные html, вы можете использовать ТЕКСТ или ДЛИННЫЙ ТЕКСТ (в зависимости от его длины).

Вы должны ВСЕГДА использовать mysql_real_escape_string() при вставке в БД. Если вы выводите HTML из БД, вы можете запустить htmlentities или html_specialchars, чтобы убедиться, что вы не выводите введенный пользователем javascript, который может перенаправить ваших пользователей на хакерские веб-сайты и тому подобное.

Еще одна идея заключается в том, что вы можете экранировать свои данные с помощью htmlentities перед вставкой в ​​БД, но это ваш выбор.

NL2BR отлично подходит для принудительного преобразования всех тегов \r\n в
.

Так что, похоже, вы на правильном пути...

person espradley    schedule 11.07.2011