Запись куска кода в БД mySQL

236
06 мая 2017, 22:30

Здравствуйте.

Суть вопроса: в админке движка необходимо сделать поле, <textarea name="js_field"> в которое администратор будет добавлять произвольный js-код (например, код яндекс метрики, или слайдера, или т.д.). Этот код должен добавляться в таблицу базы mySQL, чтобы потом выводиться в виде php-переменной в темплейте шаблона.

Проблема в том, что когда я пишу в это поле произвольный текст, или html, то добавление происходит нормально. Но когда пишу туда js-код, ничего не добавляется.

Вот пример кода, который я пытаюсь вставить

$('#myCarousel').carousel({  interval: 40000 });
$('.carousel .item').each(function() {
  var next = $(this).next();
  if (!next.length) {
    next = $(this).siblings(':first');
  }
  next.children(':first-child').clone().appendTo($(this));
  if (next.next().length > 0) {
    next.next().children(':first-child').clone().appendTo($(this)).addClass('rightest');
  } else {
    $(this).siblings(':first').children(':first-child').clone().appendTo($(this));
  }
});

В чём проблема? Здесь недопустимые символы, или что? Спасибо.

UPD Хотя если я вставляю этот код в ячейку напрямую через phpMyAdmin, то всё нормально проходит...

Answer 1

Приветствую. Если backend часть у Вас на PHP, то заэкранируйте спец символы Вашей строки методом addslashes

Или даже лучше mysql_real_escape_string

Answer 2

Вы также можете воспользоваться данным методом:

<?php
$jscode = "here your jscode";
$encode_js = htmlEntities($jscode, ENT_QUOTES);

Преобразует все спецсимволы в вашем коде в html сущности, а также используется «ENT_QUOTES», чтобы гарантировать, что XSS невозможно, и ваше приложение безопасно.

Если же вы хотите раскодировать строку (наоборот), используйте html_entity_decode(). Более подробно вы можете почитать: http://php.net/manual/ru/function.htmlentities.php#99896

Answer 3

Не используйте mysql_real_escape_string. Внимание Данное расширение устарело, начиная с версии PHP 5.5.0, и удалено в PHP 7.0.0. Используйте вместо него MySQLi или PDO_MySQL. Альтернативы для данной функции:

mysqli_real_escape_string() — Экранирует специальные символы в строке для использования в SQL выражении, используя текущий набор символов соединения

PDO::quote() — заключает строку в кавычки (если требуется) и экранирует специальные символы внутри строки подходящим для драйвера способом.

READ ALSO
почему ответ false? [дубликат]

почему ответ false? [дубликат]

На данный вопрос уже ответили:

163
DOM дерево и плагины для Chrome

DOM дерево и плагины для Chrome

Добрый день, написал плагин для хром, вроде доступ из под него к DOM дереву страницы естьALERT с помощью jQuery появляется, но никак не могу, сменить...

245
Данный вопрос из книги серии HeadFirst по JS

Данный вопрос из книги серии HeadFirst по JS

Вот пример с иcпользованием функции push,мне нужно использовать альтернативный вариант добавления элемента в пустой массив

179