За последние 24 часа нас посетили 21589 программистов и 1033 робота. Сейчас ищут 699 программистов ...

Экранирование или что-то в этом роде

Тема в разделе "PHP для новичков", создана пользователем bikerlex, 25 янв 2016.

  1. bikerlex

    bikerlex Активный пользователь

    С нами с:
    2 дек 2014
    Сообщения:
    344
    Симпатии:
    40
    Есть задача сохранить скрипт виджета вконтактека в БД и выводить виджет на сайте.

    Код (PHP):
    1. <script type="text/javascript" src="//vk.com/js/api/openapi.js?105"></script>
    2.  
    3.  
    4. <div id="vk_groups"></div>
    5. <script type="text/javascript">
    6. VK.Widgets.Group("vk_groups", {mode: 0, width: "220", height: "400", color1: 'FFFFFF', color2: '2B587A', color3: '5B7FA6'}, 000000);
    7. </script>
    Для запись использую текстарею без фильтрации спецсимволов и т.п.
    Код (PHP):
    1. <textarea rows="10" style="width: 100%"name="top_banner"
    2.                               id="top_banner"><?php echo $options['top_banner']; ?></textarea>
    Вывожу тоже просто значение.
    Код (PHP):
    1. <?php echo $options['top_banner']; ?>
    Виджет выводится как надо, но вместе с ним и кусок JS как текст, что конечно же не нужно.

    Гуглю уже полдня, не нашел как сделать это правильно. Как правильно подобные скрипты писать в базу, как правильно их выводить?

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, результаты array/object dump и т. д.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Зачем?

    Где посмотреть пример? Всё должно работать?
     
  3. bikerlex

    bikerlex Активный пользователь

    С нами с:
    2 дек 2014
    Сообщения:
    344
    Симпатии:
    40
    Сайт на вордпрессе и не мой. Я добавил опции, чтобы пользователь вставлял банеры всякие, виждеты сотсетей, рекламу, скорее всего разную, может удалять старую, добавлять новую и т.д.

    Затестил такой вариант без WP:
    Код (PHP):
    1. <?php
    2. $widget = "<script type=\"text/javascript\" src=\"//vk.com/js/api/openapi.js?121\"></script>
    3.  
    4.  
    5. <div id=\"vk_groups\"></div>
    6. <script type=\"text/javascript\">
    7. VK.Widgets.Group(\"vk_groups\", {mode: 0, width: \"220\", height: \"400\", color1: 'FFFFFF', color2: '2B587A', color3: '5B7FA6'}, 72495085);
    8. </script>";
    9.  
    10. echo $widget;
    11. ?>
    и так JS скрипт как текст в браузер не выводится, всё норм. Да и wordpress в БД хранит этот скрипт в изначальном виде, т.е. просто echo этой опции должно нормально выводить виджет. Виджет то выводится нормально, но почему-то текст JS скрипта тоже выводится в браузер. Вот такая фигня http://prntscr.com/9undwu
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    я не настолько сильный телепат чтобы лечить по фотографии
     
  5. bikerlex

    bikerlex Активный пользователь

    С нами с:
    2 дек 2014
    Сообщения:
    344
    Симпатии:
    40
    Решено. А дело было в стилях. У блока, в котором лежит скрипт стиль .banner * {display:inline-block;} Вот <script> и стал блочным, хотя должен быть none по умолчанию.