За последние 24 часа нас посетили 23667 программистов и 1598 роботов. Сейчас ищет 831 программист ...

html код из БД ломает вёрстку

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

  1. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Здравствуйте.
    Есть в БД ячейка с таким содержимым:
    PHP:
    1. <span style='color: #C0C0C0;'>Сильвер</span>
    Но если я пытаюсь внести это содержимое в текстовый инпут, всё что дальше "=" исчезает. Как вывести код без изменений именно в текстовый инпут?
    --- Добавлено ---
    В БД данные вносятся после обработки:
    PHP:
    1. $name = htmlspecialchars ($name); $name = mysql_real_escape_string ($name);
    Но она ни на что не влияет, а именно htmlspecialchars не выполняет свою функцию. Почему так?
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Покажи код html input который ломает страницу
     
  3. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Не, страницу ничего не ломаеь. Просто вместо того чтобы выводить "<span style='color: #C0C0C0;'>Сильвер</span>" он выводит "<span style="
    Вот код:
    PHP:
    1. <input type='text' id='adm_group_site_name' value='".htmlspecialchars ($grouplist["site_name"])."'/>
    Если убираю htmlspecialchars - получается вообще так:
    http://joxi.ru/8239pGyi6p9b5r
     
  4. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    а зачем ты перед внесение в БД делаешь htmlspecialchars, не стоит.
     
  5. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    А если меняю на mysql_real_escape_string - http://joxi.ru/eAOL18wu4e9ogr
    --- Добавлено ---
    Ну ок. Но суть не в этом. Как отобразить полный текст с бд вместо со спец. символами даже если они в БД не экранированы?
     
  6. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    короче вноси в БД НЕ пропуская данные через htmlspecialchars, а только через mysqli_real_escape_string, а на выходе уже, когда выводишь в html, тогда применяй htmlspecialchars и все должно работать.
    --- Добавлено ---
    и хорош уже использовать mysql_ его уже удалили в новых версиях, используй - mysqli_, кстати возможно в этом проблема, хотя маловероятно.
     
  7. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
  8. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    слух, а нафига ты используешь ординарные кавычки, вот тут:
    PHP:
    1. <input type='text' id='adm_group_site_name' value='".htmlspecialchars ($grouplist["site_name"])."'/>
     
  9. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Ну это стиль написания кода такой. Если не ошибаюсь, то так правильно. И без них выводится вообще бред: http://joxi.ru/52a5YWwuGYEXK2
     
  10. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    короче не знаю, у тебя скажем так "не срабатывает" htmlspecialchars.

    тут несколько вариантов, или полученный тобой результат проходит мимо htmlspecialchars, соответственно оно не выполняется и в этом проблема.
    проверяй код.
    и еще, сделай var_dump того что получил из БД, что там, может там только часть.
     
  11. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
  12. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    PHP:
    1. $str = '<span style="color: red;">One</span>';
    2. $str .= "<span style='color: green;'>Two</span>";
    3.  
    результат:
    Код (Text):
    1. string '&lt;span style=&quot;color: red;&quot;&gt;One&lt;/span&gt;&lt;span style='color: green;'&gt;Two&lt;/span&gt;' (length=108)
    по этому ищи.
     
  13. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Может, в инпуте оно как-то не так выводится??
    --- Добавлено ---
    Дело в том что у меня инпут пишется в переменную, а переменная выводится на страницу.
     
  14. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    у тебя вывод данных происходит не там где надо, без htmlspecialchars вот и все.
    если ты выводишь input через echo это не имеет значения, все там нормально хранится.
     
  15. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Через эхо, но не напрямую, а через перевенную. А её уже вывожу через эхо.
     
  16. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    это не имеет значения.
     
  17. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Если просто присваиваю переменной значение:
    Код (Text):
    1. htmlspecialchars ($grouplist["site_name"])
    то всё выводится правильно. А если через свой инпут, будь он неладен - нет.
     
  18. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    хотя да, разметка ломается
    PHP:
    1. $str = '<span style="color: red;">One</span>';
    2. $str .= "<span style='color: green;'>Two</span>";
    3.  
    4. $input = "<input type='text' value='" . htmlspecialchars($str) . "' />";
    5. var_dump($input);
    6. echo $input;
    а с двойными кавычками все в порядке, используй двойные:
    PHP:
    1. $str = '<span style="color: red;">One</span>';
    2. $str .= "<span style='color: green;'>Two</span>";
    3.  
    4. $input = '<input type="text" value="' . htmlspecialchars($str) . '" />';
    5. var_dump($input);
    6. echo $input;
     
  19. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Кстати, код страницы показывает следующее:
    PHP:
    1. <input type='text' id='adm_group_site_name' value='&lt;span style='color: gold;'&gt;Голд&lt;/span&gt;'/>
    --- Добавлено ---
    Если я буду использовать двойные то мне надо переписать половину кода... У меня в переменную пишется через двойные, в самом инпуте все параметры через одинарные, а в тексте, который надо вывести - тоже одинарные. Получается что те которые в тексте перекрывают те что в инпуте. Как их экранировать?
     
  20. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    ну а кто виноват, везде двойные..
    тут ни что не перекрывается, тут косяк с ординарными кавычками, с двойными все ок.
     
  21. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Так я и не говорю что с двойными что то. Я говорю что те которые в ответе из БД (одинарные) перекрывают те которые в инпуте (тоже одинарные).
     
  22. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    ты странный человек, я привел код выше, в котором без БД с ординарными кавычками косяк, по этому в html разметке используй только двойные.
    а перекрывания как ты говоришь это очень плохая идея, что бы ни чего не перекрывать придумали htmlspecialchars, и как сейчас выясняется htmlspecialchars и двойные кавычки.
     
  23. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Всё. Теперь понял. Спасибо. Просто заменил в БД одинарные на двойные.
     
  24. Scogzhe

    Scogzhe Зэк
    [ БАН ]

    С нами с:
    4 фев 2015
    Сообщения:
    109
    Симпатии:
    0
    За value выноси весь php по максимуму выше
     
  25. denis01

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

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