Чудеса с поведением htmlspecialchars

Статус
В этой теме нельзя размещать новые ответы.

Vladson

Сильнобухер
Здравствуй c0dex, я тоже не пишу хайлоад...

Это группа поддержки тех кто не пишет хайлоад ?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
*Голосом Малышевой* Вы пишете хайлоад? Это - норма!
 

doran7

Новичок
еще раз примени htmlspecialchars при выводе в форму.
Ты хочешь сказать, что если в БД хранится что-то вроде:
(a < 20) & (b > 90)
то чтобы при редактировании в поле textarea формы увидеть тоже самое, надо этот контент еще раз прогнать через htmlspecialchars? Тогда что получается, что поле textarea формы (без повторного прогона этих данных через htmlspecialchars) отобразит их также как и браузер, т.е. в виде:
(a < 20) & (b > 90)
??
Реально это так и происходит, только я не могу объяснить, почему. И никто этого пока толком не объяснил.
Я просто принял как факт эти чудеса и сделал редактирование с учетом этого. Все работает. Но понять почему так хотелось бы...
 

Dez

Новичок
да какие чудеса....
Это просто ты html-а не знаешь. Почитай про смысл спецсимволов. Они введены чтобы структуру html док-та не ломать, а отображаются как тот символ, который они обозначают.

Да и вообще вот нелогичное что то ты делаешь. Объясняю почему:
1) В базу ты сохраняешь, прогоняя через htmlspecialchars. Значит этот текст подразумевается не html по своей сути.
html текст не сохраняется через такой строгий фильтр.
2) А в редакторе ты хочешь увидеть этот текст в значках спецсимволов, т.е. в редакторе ты хочешь работать с ним как с html-ом.
 

Dez

Новичок
ну, если взять zend framework или друпал, то домашняя страничка уже хайлод. .
В друпал 8, в текущем состоянии, для построения каждой странички делается около 500 include. Стали использовать компоненты Симфони называется :)
 

Dovg

Продвинутый новичок
В друпал 8, в текущем состоянии, для построения каждой странички делается около 500 include
Ты говоришь 500 include, как будто в этом есть что-то плохое.

В этом мире давно изобрели автозагрузку классов и кешеры опкода, чтобы перестать об этом думать.
 

Фанат

oncle terrible
Команда форума
И никто этого пока толком не объяснил.
Твоя единственная проблема состоит в том, что ты считаешь себя здесь самым умным.
На словах ты можешь признавать что да, нуб и "подход сам по себе спорный" - но это только на словах. Внутренне ты убежден что все кругом идиоты, а твой подход самый верный. В своих заблуждениях (про спецсимволы ли, про хайлоад ли) ты внутренне настолько уверен, что даже мысли не допускаешь о своей неправоте. Даже споришь вяло - "ну-ну, собака лает - ветер носит. Я-то лучше знаю, как хайлоад устроен".
Вот эта убежденность и мешает тебе понять, что тебе говорят. Хотя Вурдалак сразу ответил на твой прмитивный вопрос, который больше ни для кого загадки не представляет.
 

Dez

Новичок
Ты говоришь 500 include, как будто в этом есть что-то плохое.

В этом мире давно изобрели автозагрузку классов и кешеры опкода, чтобы перестать об этом думать.
500 - это с учетом автозагрузки естественно. Если тут посмотреть, то читаем:

По времени считывания пустого файла колебания от 0.001 для readfile до 0.002 для include.
500*0.02 = 1 секунда.
 

doran7

Новичок
Да и вообще вот нелогичное что то ты делаешь. Объясняю почему:
1) В базу ты сохраняешь, прогоняя через htmlspecialchars. Значит этот текст подразумевается не html по своей сути.
html текст не сохраняется через такой строгий фильтр.
2) А в редакторе ты хочешь увидеть этот текст в значках спецсимволов, т.е. в редакторе ты хочешь работать с ним как с html-ом.
Все логично. У меня контент в bb-кодах. Сначала я прогоняю его через htmlspecialchars, а потом через парсер bb-кодов. Поэтому html-текст нормально проходит через такой фильтр, плюс я могу нормально хранить в БД и отображать в браузере html, js и прочие коды. Редактирование посложнее, но сделано и работает, через обратный парсер bb-кодов (html в bb).
Редактор у меня - это поле textarea формы, прежде всего. И в нем я, после обратного парсинга html-bb нормально вижу все, что надо.
Отдельный вопрос - когда контент содержит куски html-кода не для интерпретации, а для отображения в браузере. Отображается все нормально. А вот при редактировании этих кусков html-кода, которые в БД хранятся в виде спецсимволов (&lt; , &gt; и т.д.) я ожидал, что они будут видны в textarea в таком же виде, как они хранятся в БД. А они видны как (< , > и т.д.).
 

doran7

Новичок
Твоя единственная проблема состоит в том, что ты считаешь себя здесь самым умным.
На словах ты можешь признавать что да, нуб и "подход сам по себе спорный" - но это только на словах. Внутренне ты убежден что все кругом идиоты, а твой подход самый верный. В своих заблуждениях (про спецсимволы ли, про хайлоад ли) ты внутренне настолько уверен, что даже мысли не допускаешь о своей неправоте. Даже споришь вяло - "ну-ну, собака лает - ветер носит. Я-то лучше знаю, как хайлоад устроен".
Это неправда, шеф, ты обо мне слишком высокого мнения... :). Здесь я простой, как огурец, никакого такого коварства.... Я даже не пытался как-то рекламировать свой подход, т.к. он действительно весьма спорный, и интересен только в отдельных, довольно редких случаях. Про хайлоад я здесь вообще не спорю (не потому что собака лает и т.д., а потому что я чайник в хайлоаде), а просто отвечаю на возникающие вопросы, чтобы как-то объяснить свои действия, которые мне чем-то интересны, даже просто для того, чтобы проверить, может ли это работать.
Насчет заблуждения про спецсимволы - да я вообще не знаю, как они устроены и как они работают, но применять-то их приходится. Искал в инете инфу про эти спецсимволы - понял только то, что чтобы html-символы не интерпретировались в браузере, а отображались, их надо переделать в эти самые &lt; , &gt; и т.д. Но чтобы они в textarea отображались, как в браузере, до этого я, как полный чайник в этих спецсимволах, пока никак не допру.
 

doran7

Новичок
да какие чудеса....
Это просто ты html-а не знаешь. Почитай про смысл спецсимволов. Они введены чтобы структуру html док-та не ломать, а отображаются как тот символ, который они обозначают.
Дык я ж и говорю, что html в этом плане не знаю, в плане спецсимволов. И где прочитать про их смысл - тоже не знаю, хотя пытался найти эту инфу.
Хотя Вурдалак сразу ответил на твой прмитивный вопрос, который больше ни для кого загадки не представляет.
Ну Вурдалак-то корифей в спецсимволах, а я в них ни бум-бум, без шуток.
 

doran7

Новичок
чтобы они были в таком же виде как в БД, к ним надо htmlspecialchars применить
Дык... мне как раз не нужно, чтобы они были как в БД, для их редактирования-то. Просто я считал textarea как бы аналогом поля некоего текст-плэйн редактора, а оказывается, что оно не совсем так. И textarea кое в чем ведет себя как часть окна браузера.
Т.е. если я считываю эти символы из БД в строковую переменную, содержимое этой переменной сохраняю в текст-плэйн файл .txt, открываю этот файл в простом текстовом редакторе, тогда я увижу эти символы также как в БД без доп. преобразований?
 
Последнее редактирование:

Dovg

Продвинутый новичок
Если тут посмотреть, то читаем
Там еще пишут
echo 'a' быстрее, чем echo "a" для строк без переменных
Это вызвано тем, что во втором случае движок PHP пытается найти переменные. Для больших объёмов данных различия во времени достаточно заметны.
Не читайте советских газет перед сном.
 

Dez

Новичок
Т.е. если я считываю эти символы из БД в строковую переменную, содержимое этой переменной сохраняю в текст-плэйн файл .txt, открываю этот файл в простом текстовом редакторе, тогда я увижу эти символы также как в БД без доп. преобразований?
Что мешает самому проверить? ;)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху