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). Сделайте это после фильтрации ввода.