Экранирование кавычек и тегов для передачи данных в функцию JS - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть таблица, в которой я сохраняю данные тела блога, данные проходят через редактор TINYMCE и сохраняют теги и стили. Когда я выбираю данные для редактирования и пропускаю их через функцию, чтобы открыть модал, они показывают теги и все остальное и выводят данные в виде кнопки. Вот код:

    <td>
        <a class="btn btn-primary btn-md" 
        onclick="getData('<?php echo $blog->title?>','<?php echo 
        $blog->body?>',
        <?php echo $blog->id?>')">Update</a> 
    </td>

Это функция getData

 function getData(title,body,id) {
     debugger;
     document.getElementById('title1').value = title;
     tinymce.get('body').setContent(body);
     document.getElementById('blog_id').value = id;

     $('#myModalUpdate').modal('show');
 };

Вот так выводится на странице введите описание изображения здесь

1 Ответ

0 голосов
/ 30 апреля 2018

Вам просто нужно думать о каждом слое по одному.

Сначала у вас есть данные ...

$blog->title

… и вы хотите поместить его в JavaScript. Таким образом, вы должны избежать этого, чтобы сделать его безопасным для JavaScript. json_encode сделает это, потому что JSON является подмножеством JS. Поскольку вы помещаете строку, вы получаете строковый литерал JSON, поэтому вам не нужно добавлять кавычки вручную.

$js_safe_title = json_encode($blog->title);
$js_safe_body = json_encode($blog->body);
$js = "getData($js_safe_title, $js_safe_body);"

… и затем вы хотите поместить этот JS в атрибут HTML, поэтому вам нужно его исключить, чтобы сделать его безопасным для HTML:

$html_safe_js = htmlspecialchars($js);

Тогда вы можете поместить его в HTML:

 onclick="<?=$html_safe_js?>"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...