Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.36.10] |
|
Страницы: (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 Ну а результат работы - "ни чего не происходит"... а что должно произойти по вашему? Файл style.css изменен, проверяйте. |
Сообщ.
#38
,
|
|
|
Цитата Руслан @ Ну а результат работы - "ни чего не происходит"... а что должно произойти по вашему? Файл style.css изменен, проверяйте. И правда, файл цсс меняется. А я то смотрю на изменения цвета элемента ((( он не меняется, и я морочу себе и вам голову. Кстати, то что грузилась страница настройки xammp... она ж тоже в крне лежит и называется index.php Я и переименовывал вашу, чтоб конфликтов не было, а когда в папке лежала, так даже не подумал на эту тему. Ладно, буду дальше разбираться и мучать вас вопросами, в том числе и почему цвет не применяется, хотя в цсс изменения вносятся. Кстати, и цвет меняется ((( ерунда какая-то... вчера ж вместо замены цвета просто выводило содержимое файла цсс |
Сообщ.
#39
,
|
|
|
Цитата D-G @ А я то смотрю на изменения цвета элемента ((( он не меняется, и я морочу себе и вам голову. Вообще то цвет меняется, но у юзера, а вносить изменения доступно только админу. Важней вопрос - "как самостоятельно убедится в этапах работы скрипта"? А для этого нужны базовые понимания, потому я упорно рекомендую найти толковую книгу по php для начинающих! - хотя бы брошюрку, где доступным языком, и с простыми примерами, были бы даны таки основы! Цитата 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.':)(.*(.*)/Usi' -это первый элемент который меняется на "$1$2$RequestElementValue;$4" Но плохо понимаю кодировку этого первого элемента, и не понимаю, откуда взялась $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 раза. Я давно мечтал изучить особенности Вашего бразуера! |