Здравствуйте. Есть в БД ячейка с таким содержимым: PHP: <span style='color: #C0C0C0;'>Сильвер</span> Но если я пытаюсь внести это содержимое в текстовый инпут, всё что дальше "=" исчезает. Как вывести код без изменений именно в текстовый инпут? --- Добавлено --- В БД данные вносятся после обработки: PHP: $name = htmlspecialchars ($name); $name = mysql_real_escape_string ($name); Но она ни на что не влияет, а именно htmlspecialchars не выполняет свою функцию. Почему так?
Не, страницу ничего не ломаеь. Просто вместо того чтобы выводить "<span style='color: #C0C0C0;'>Сильвер</span>" он выводит "<span style=" Вот код: PHP: <input type='text' id='adm_group_site_name' value='".htmlspecialchars ($grouplist["site_name"])."'/> Если убираю htmlspecialchars - получается вообще так: http://joxi.ru/8239pGyi6p9b5r
А если меняю на mysql_real_escape_string - http://joxi.ru/eAOL18wu4e9ogr --- Добавлено --- Ну ок. Но суть не в этом. Как отобразить полный текст с бд вместо со спец. символами даже если они в БД не экранированы?
короче вноси в БД НЕ пропуская данные через htmlspecialchars, а только через mysqli_real_escape_string, а на выходе уже, когда выводишь в html, тогда применяй htmlspecialchars и все должно работать. --- Добавлено --- и хорош уже использовать mysql_ его уже удалили в новых версиях, используй - mysqli_, кстати возможно в этом проблема, хотя маловероятно.
Вот так вношу: http://joxi.ru/4AkyeXWsMLo8qm Вот так обрабатывается: PHP: $name = mysql_real_escape_string ($name); Вот так хранится в БД: http://joxi.ru/E2pzg7ahB070Br Но всё равно отображается в инпуте так: http://joxi.ru/1A55pE8uKxDxOA Хотя инпут вывода выглядит вот так: PHP: <input type='text' id='adm_group_site_name' value='".htmlspecialchars ($grouplist["site_name"])."'/>
слух, а нафига ты используешь ординарные кавычки, вот тут: PHP: <input type='text' id='adm_group_site_name' value='".htmlspecialchars ($grouplist["site_name"])."'/>
Ну это стиль написания кода такой. Если не ошибаюсь, то так правильно. И без них выводится вообще бред: http://joxi.ru/52a5YWwuGYEXK2
короче не знаю, у тебя скажем так "не срабатывает" htmlspecialchars. тут несколько вариантов, или полученный тобой результат проходит мимо htmlspecialchars, соответственно оно не выполняется и в этом проблема. проверяй код. и еще, сделай var_dump того что получил из БД, что там, может там только часть.
Дамп показывает: http://joxi.ru/KAgZGRwug0Eqx2 --- Добавлено --- А вот var_dump (htmlspecialchars ($grouplist["site_name"]))." показывает то что надо: http://joxi.ru/D2PKQNwudEqbOm
PHP: $str = '<span style="color: red;">One</span>'; $str .= "<span style='color: green;'>Two</span>"; var_dump( htmlspecialchars($str) ); результат: Код (Text): string '<span style="color: red;">One</span><span style='color: green;'>Two</span>' (length=108) по этому ищи.
Может, в инпуте оно как-то не так выводится?? --- Добавлено --- Дело в том что у меня инпут пишется в переменную, а переменная выводится на страницу.
у тебя вывод данных происходит не там где надо, без htmlspecialchars вот и все. если ты выводишь input через echo это не имеет значения, все там нормально хранится.
Если просто присваиваю переменной значение: Код (Text): htmlspecialchars ($grouplist["site_name"]) то всё выводится правильно. А если через свой инпут, будь он неладен - нет.
хотя да, разметка ломается PHP: $str = '<span style="color: red;">One</span>'; $str .= "<span style='color: green;'>Two</span>"; $input = "<input type='text' value='" . htmlspecialchars($str) . "' />"; var_dump($input); echo $input; а с двойными кавычками все в порядке, используй двойные: PHP: $str = '<span style="color: red;">One</span>'; $str .= "<span style='color: green;'>Two</span>"; $input = '<input type="text" value="' . htmlspecialchars($str) . '" />'; var_dump($input); echo $input;
Кстати, код страницы показывает следующее: PHP: <input type='text' id='adm_group_site_name' value='<span style='color: gold;'>Голд</span>'/> --- Добавлено --- Если я буду использовать двойные то мне надо переписать половину кода... У меня в переменную пишется через двойные, в самом инпуте все параметры через одинарные, а в тексте, который надо вывести - тоже одинарные. Получается что те которые в тексте перекрывают те что в инпуте. Как их экранировать?
ну а кто виноват, везде двойные.. тут ни что не перекрывается, тут косяк с ординарными кавычками, с двойными все ок.
Так я и не говорю что с двойными что то. Я говорю что те которые в ответе из БД (одинарные) перекрывают те которые в инпуте (тоже одинарные).
ты странный человек, я привел код выше, в котором без БД с ординарными кавычками косяк, по этому в html разметке используй только двойные. а перекрывания как ты говоришь это очень плохая идея, что бы ни чего не перекрывать придумали htmlspecialchars, и как сейчас выясняется htmlspecialchars и двойные кавычки.
@SamyRed https://secure.php.net/manual/ru/function.htmlspecialchars.php надо флаг добавить ENT_QUOTES