
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.52] |
![]() |
|
Страницы: (4) 1 2 [3] 4 все ( Перейти к последнему сообщению ) |
Сообщ.
#31
,
|
|
|
да, загадка! ![]() Но у меня работает, а у вас не работает. Учитывая, что в целом вам этот код не нужен, о чем мы вообще говорим? ![]() Вы хотите сначала сохранять в .css, теперь в xml... При этом имея смутные представления даже об основах программирования... ![]() Вам бы хорошую книгу найти - для начинающих! - там где примеры "как выводить 2+2", и дальше, что такое переменные, чем отличаются данные на сервере от данных у клиента... и далее, далее, далее... ![]() |
Сообщ.
#32
,
|
|
|
Цитата Руслан @ Учитывая, что в целом вам этот код не нужен Вообще-то нужен. Очень хочется разобраться, в том числе и для понимания плюсов и минусов. А другие примеры начинаю читать потому что с вашим примером не могу разобраться. Я уже прочитал, что можно сохранять в БД и через сессию (только не совсем понял, это куки или нет, вроде нет). Вот ваш пример записывает в цсс файл. Тоже интересно. Еще прочитал, что создают какие-то эхо-формы, только вообще не понял как это. Ведь если знать только один вариант, можно упустить что-то важное, застрять на месте, перестать следить за развитием программирования. Да и думаю, что в вашем варианте просто не понимаю, где должны лежать файлы. Ведь повторюсь даже не представляю, в какую корневую папку его положить, если htdocs верхняя (корневая) для всех остальных шаблонов, тестовых примеров и тп. У вас видимо апач поднят не с помощью xammp. А книжки читаю. Только опять же, каждый советует свое, и у всех разные понятия о лучшей книжке. Я вот благодаря вашему примеру свой вариант привел в более менее нормальный вид, хотя перед этим уже много чего прочитал, но наверно не того что надо Добавлено Цитата Руслан @ чем отличаются данные на сервере от данных у клиента... и далее, далее, далее... Я так понимаю, что данные в цсс файле сохраняются на сервере, и в xml - это тоже на сервере. То что мы видим при редактировании скажем моего варианта - это клиентская часть, она на сервере не хранится. |
Сообщ.
#33
,
|
|
|
Цитата D-G @ не понимаю, где должны лежать файлы Оба из трех... - это маловато! ![]() Цитата D-G @ в том числе и для понимания плюсов и минусов Очень интересно, по каким критериям вы отличите плюсы от минусов? ![]() Добавлено Цитата D-G @ Я так понимаю, что данные в цсс файле сохраняются на сервере, и в xml - это тоже на сервере. Книгу, читайте книгу, основы PHP. :-) |
Сообщ.
#34
,
|
|
|
Цитата Руслан @ Оба из трех... - это маловато Просто опечатался, да и не важно, ведь ошибка не в подтягивании цсс файла, а в переходе по страницам, ведь переходит на страницу настроек xammp, тоесть до цсс даже не доходит. Цитата Руслан @ Очень интересно, по каким критериям вы отличите плюсы от минусов? Начну со скорости загрузки, потом, как я понял, через те же сессии, сохраняется с приставкой в конце адресной строки. Приставка одна и таже, при этом все изменения сохраняются. Но если добавочку убрать, то все стирается, грузится дефолтный. С БД пока не разобрался. Для этого надо видимо и с БД разбираться, но возможно быстрее растет объем. Это понятно, я ещё слишком мало знаю, чтобы сейчас делать выводы, но всему свое время. А так читаю. |
Сообщ.
#35
,
|
|
|
Цитата D-G @ а в переходе по страницам Что мешает определить, какие ссылки понятны вашей системе? ![]() |
Сообщ.
#36
,
|
|
|
Цитата Руслан @ Что мешает определить, какие ссылки понятны вашей системе? Видимо где-то нехватка знаний. Меня хватило поменять как я вам показал выше. В этом варианте я со страницы админа перехожу на страницу юзера, а при нажатии на кнопку "сменить" достает содержимое цсс файла, распечатывает его и выдает ошибку, мол не идентифицированная переменная are_user_is_admin объявленная как are_user_is_admin. Я уже приводил выше код. Не пойму как надо прописать пути, если лежат в одной папке и даже в самый корень xammp ложил. Какие данные могли бы вам подсказать, где у меня ошибка? Были мысли, что проблема в этом месте вашего кода ![]() ![]() //сохранение доступно только админу if (!are_user_is_admin) {return false;} Но вырезал его, и тогда при нажатии на "сменить" вообще ничего не происходило. Удаление ! тоже ничего не дало. Дважды копировал заново и пересохранял ваш код на всякий случай, вдруг где-то чего-то упустил. |
Сообщ.
#37
,
|
|
|
Цитата D-G @ Но вырезал его, и тогда при нажатии на "сменить" вообще ничего не происходило. Угу, в строке 12, are_user_is_admin - вообще то обращение к функции а не переменной. Впрочем, дело десятое, строку можно исправить под ваш интерпретатор, или удалить - любое из предложенных решений не повлияет на результат работы. "варианты решения" решение1 - в начало строки 12 добавить // решение2 - в 12й строке, после слова are_user_is_admin добавить () решение3 - удалить строку №12 Ну а результат работы - "ни чего не происходит"... ![]() ![]() ![]() |
Сообщ.
#38
,
|
|
|
Цитата Руслан @ Ну а результат работы - "ни чего не происходит"... ![]() ![]() И правда, файл цсс меняется. А я то смотрю на изменения цвета элемента ((( он не меняется, и я морочу себе и вам голову. Кстати, то что грузилась страница настройки xammp... она ж тоже в крне лежит и называется index.php Я и переименовывал вашу, чтоб конфликтов не было, а когда в папке лежала, так даже не подумал на эту тему. Ладно, буду дальше разбираться и мучать вас вопросами, в том числе и почему цвет не применяется, хотя в цсс изменения вносятся. Кстати, и цвет меняется ((( ерунда какая-то... вчера ж вместо замены цвета просто выводило содержимое файла цсс |
Сообщ.
#39
,
|
|
|
Цитата D-G @ А я то смотрю на изменения цвета элемента ((( он не меняется, и я морочу себе и вам голову. Вообще то цвет меняется, но у юзера, а вносить изменения доступно только админу. ![]() Важней вопрос - "как самостоятельно убедится в этапах работы скрипта"? ![]() ![]() Цитата D-G @ ерунда какая-то... вчера ж вместо замены цвета просто выводило содержимое файла цсс Огромное количество вопросов решается при понимании основ вэб программирования. ![]() А при отсутствии знаний основ, чаще будут возникать всякого рода казусы, уводящие в тупик... ![]() ![]() ![]() ![]() |
Сообщ.
#40
,
|
|
|
Цитата Руслан @ Вообще то цвет меняется, но у юзера, а вносить изменения доступно только админу Ну так я у юзера и проверял Прочитал несколько брошюрок, в том числе и эту http://www.php-s.ru/self-teacher/1_1/ (Заранее прошу прощения у админов, не знаю, будет ли это нарушением правил дать тут ссылку. Если это нарушение, то вырезайте её-их) И вот тут пробую читать https://www.php.net/manual/ru/ Я вот подумал, может это из-за куков было? Хотя я постоянно обновлял страничку, даже иногда через кнтрл+ф5. А тут со злости сегодня решил вручную поменять файл стилей, проверить, что именно в нем подхватывается. Добавил ширину у div.ClassForUser и она поменялась уже с цветом. Потом независимо от того была ширина или нет, все цвета применялись. А все что я до этого менял - это пути. И сейчас они стоят так же, как я прописывал их перед этим. Может в настройках ксампа стояли запреты на такой тип редактирования файла, а после моих ручных корректировок все разрешилось? Но тогда почему выводилось содержимое цсс файла? |
Сообщ.
#41
,
|
|
|
Цитата D-G @ Я вот подумал, может это из-за куков было? Дело было в том, что браузер не счел необходимым проверить изменился ли файл .css. Вместо того, что бы качать его, взял из своего кэша, таким образом ускорив загрузку сайта. ![]() ![]() Добавлено Цитата D-G @ даже иногда через кнтрл+ф5 мистика. ![]() |
Сообщ.
#42
,
|
|
|
Цитата Руслан @ а что должно произойти по вашему? У меня вопрос по вашему примеру. Там есть такая строка: ![]() ![]() $css_file=preg_replace('/(.*'.$Target1.'{)(.*[^}]\s'.$Target2.':)(.*;)(.*)/Usi',"$1$2$RequestElementValue;$4",$css_file); То, что я понимаю: 1.$2 - это ClassForUser, в случае если это Target1 ![]() ![]() $Target1=preg_replace('/(_css-)(.*)(__target.*)/', "$2", $RequestElementName); 2. $2 - это _css-ClassForUser__target- в случае если это Target2, но не понимаю, когда это успели присвоить, и почему если я в случае target1 меняю $2 на $1, получается один результат, а в случае с target2 - другой. 3. '/(.*'.$Target1.'{)(.*[^}]\s'.$Target2.':)(.* ![]() Но плохо понимаю кодировку этого первого элемента, и не понимаю, откуда взялась $1 и что за переменная $4 4. По идее Target1 - показывает из какого класса цсс файла берется переменная, а Target2 показывает свойства этой переменной, так сказать, отображают массив из этих данных, причем от перемены мест в файле стилей свойств класса не влияет на применение стиля. 5. Если добавить ещё два поля напр, ширину и высоту, то Target2 правильно его отображает. ![]() ![]() $RequestElementName=_css-ClassForUser__target-width_css- $target1=ClassForUser $target2=width $value= Казалось бы, что все должно работать, Но если применить, то изменений не происходит. При этом, в свойствах класса стирается все, что стоит перед ними вместе с этими двумя свойствами. По всей видимости ответ на последний вопрос кроется в первых вопросах. Если можно - натолкните на мысль. |
Сообщ.
#43
,
|
|
|
Цитата D-G @ Там есть такая строка: Вы выбрали сложную часть кода. Но раз уж вопрос имеется, очень поверхностно(наглядный осмотр лишь одного аспекта) попробую на него ответить. вот исходная строка: ![]() ![]() $css_file=preg_replace('/(.*'.$Target1.'{)(.*[^}]\s'.$Target2.':)(.*;)(.*)/Usi',"$1$2$RequestElementValue;$4",$css_file); вот её частичный разбор: $css_file=preg_replace('/ $1 = (.*'.$Target1.'{) $2 = (.*[^}]\s'.$Target2.':) $3 = (.*;) $4 = (.*) /Usi', "$1$2$RequestElementValue;$4", $css_file); как видите, вместо $3 подставлено $RequestElementValue, значение которого взято парой строк выше, из $_POST... т.е. часть $3 в $css_file заменена на $RequestElementValue. На самом деле, лучше бы не ломать свой мозг об регулярные выражения, хотя я изначально постарался его упростить, и добавил точки останова в комментариях - для возможности изучить влияние при изменении ВХОДНЫХ данных. Код этой функции таки лучше не трогать, пока не стоит вопрос обеспечения безопасности. Через него вы можете менять в общем не особо ограниченное количество данных в своем .css. ![]() Цитата D-G @ Казалось бы, что все должно работать Дело в том, что регулярка (выше обсуждаемая), написана несколько простовато, она корректно обрабатывает файл.css лишь определенного формата: 1) сразу после $target1(который .className), должен находиться символ { 2) свойство, которое вы пробуете менять - должно присутствовать в файл.css |
Сообщ.
#44
,
|
|
|
Цитата Руслан @ 2) свойство, которое вы пробуете менять - должно присутствовать в файл.css Так он присутствует. При этом если его пробовать изменить, то затираются все свойства, которые перед ним именно в цсс файле. Если оставлять пустым поле, то в файле цсс не стирается. Цитата Руслан @ /Usi', А это что такое, я нигде не нашел описание Цитата Руслан @ лучше бы не ломать свой мозг об регулярные выражения А где можно подробнее с доступными примерами почитать? Цитата Руслан @ $1 = (.*'.$Target1.'{) $2 = (.*[^}]\s'.$Target2.':) $3 = (.* ![]() $4 = (.* А когда это успели присвоить? И ещё, почему-то именно с этим примером у меня кнтрл+ф5 срабатывает со 2-5 раза. |
Сообщ.
#45
,
|
|
|
Цитата D-G @ А когда это успели присвоить? В функции preg_replace примерно так были обработаны "()". Разве вы не заметили этого же принципа, парой строк выше: ![]() ![]() $Target1=preg_replace('/(_css-)(.*)(__target.*)/', "$2", $RequestElementName); Цитата D-G @ Так он присутствует. При этом если его пробовать изменить, то затираются все свойства, которые перед ним именно в цсс файле. Если оставлять пустым поле, то в файле цсс не стирается. О! Проверил, действительно, регулярка написана с ошибкой, при некоторых обстоятельствах выжирает кусок своего класса! ![]() ![]() Похоже проблема в том, что preg_replace воспринимает "значение переменной"($RequestElementValue) в качестве некого условия для замены... ![]() Добавление одного пробела исправило ситуацию: ![]() ![]() $css_file=preg_replace('/(.*'.$Target1.'{)(.*[^}]\s'.$Target2.'\:)(.*;)(.*)/Usi','$1$2 '.$RequestElementValue.';$4',$css_file); Добавлено Цитата D-G @ И ещё, почему-то именно с этим примером у меня кнтрл+ф5 срабатывает со 2-5 раза. Я давно мечтал изучить особенности Вашего бразуера! ![]() |