PHP-хранение текста в базе данных MySQL
У меня есть текстовое поле на моем сайте, и мне нужно сохранить все, что пользователь вводит в мою базу данных, и получить его позже. Мне нужно сохранить его точно так же, как ввел пользователь, включая специальные символы, возврат каретки и т. д.
какой процесс я должен использовать в PHP для хранения этого в моем поле базы данных (которое является "текстовым" полем)? Должен ли я использовать html_encode PHP или что-то в этом роде?
спасибо.
Edit: мне также нужно сохранить правильное форматирование Я. e вкладки и несколько пробелов.
5 ответов
вы не должны html-кодировать данные при записи в хранилище данных - таким образом, вы можете использовать свои данные также для чего-то другого (например, электронные письма, PDF-документы и т. д.). As Ассаф уже сказано: обязательно избегать SQL-инъекций, избегая ввода или используя параметризованные запросы вставки.
вы должны, нет, скажем, должны однако html-кодируйте свои данные, показывая их на HTML-странице! Это приведет к опасному HTML или Javascript-коду бесполезно, так как HTML-теги, присутствующие в данных, больше не будут распознаваться браузером как HTML-теги.
процесс немного сложнее, когда вы позволите пользователям размещать данные с HTML-тегами внутри. Затем вы должны пропустить выходную кодировку в пользу ввода-дезинфекции, которая может быть произвольной сложной в зависимости от ваших потребностей (допустимые теги, например).
использовать использования mysql_real_escape_string():
$safetext = mysql_real_escape_string($_POST['text']);
$query = "INSERT INTO my_table (`my_field`) VALUES ('$safetext')";
mysql_query($query);
это должно сработать.
не есть для кодирования его, чтобы сохранить его в mysql.
убедитесь, что вы используете параметризованную команду insert, чтобы избежать SQL-инъекции.
следующее должно работать:
if (get_magic_quotes_gpc()) {
$content = stripslashes($content);
}
$content = mysql_real_escape_string($content);
Если ваш столбец utf8, у вас не должно быть проблем со специальными символами. После того, как вы отформатировали содержимое правильно, вы можете передать его mysql, используя стандартные методы вставки.
чтобы правильно сохранить пользовательский текст в дополнение к форматированию, все, что вам нужно сделать, это преобразовать все новые строки в разрывы с помощью nl2br($inputtext)
. Сделайте это после фильтрации ввода.