170 похожих чатов

Всем привет. Изобрела велосипед, а он плохо едит. Разрабатываю шаблонизатор. Если смотреть

сайт с правами гостя, все отображается как надо.

Если смотреть сайт от пользователя и выше все хорошо, т.е. пользователь не видит то, что должен видеть модер, модер не видит то, что должен видеть админ и т.д.
Проблема в том, что все начиная от USER до ROOT видят то что видит гость а видеть не должны.
Хотя в классе TPL_ROOT прописано сокрытие и он наследуется до самого класса TPL_USER

templates.class.php https://pastebin.com/XrE3vdAa
index.php https://pastebin.com/SyuwXHZj
index.tpl https://pastebin.com/cvnHSz9p

Предполагаю проблема в регулярке
http://www.pcre.ru/eval/%7BFOR_GUEST%7D(%5Cr%3F%5Cn%3F)%2B.%2B(%5Cr%3F%5Cn%3F)%2B%7BFOR_GUEST_END%7D%40%3D%23%3D%40100%40%3D%23%3D%40%3C!DOCTYPE%20HTML%20PUBLIC%20%22-%262f%3B%262f%3BW3C%262f%3B%262f%3BDTD%20HTML%204.01%262f%3B%262f%3BEN%22%20%22http%3A%262f%3B%262f%3Bwww.w3.org%262f%3BTR%262f%3Bhtml4%262f%3Bstrict.dtd%22%3E%262a%3B%3Chtml%3E%262a%3B%20%20%20%20%3Chead%3E%262a%3B%20%20%20%20%20%20%20%20%3Cmeta%20http-equiv%20%3D%20'content-type'%20content%20%3D%20'text%262f%3Bhtml%3B%20charset%3Dutf-8'%20%262f%3B%3E%262a%3B%20%20%20%20%20%20%20%20%3Ctitle%3E%7Btitle%7D%3C%262f%3Btitle%3E%262a%3B%20%20%20%20%3C%262f%3Bhead%3E%262a%3B%20%20%20%20%3Cbody%3E%262a%3B%3Ch1%3E%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%3C%262f%3Bh1%3E%262a%3B%7BFOR_GUEST%7D%262a%3B%20%20%20%20%3Cform%20action%20%3D%20'login.php'%20method%20%3D%20'post'%3E%262a%3B%20%20%20%20%3Cp%3E%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F%3C%262f%3Bp%3E%262a%3B%20%20%20%20%D0%9B%D0%BE%D0%B3%D0%B8%D0%BD%3Cinput%20type%20%3D%20'text'%20name%20%3D%20'username'%262f%3B%3E%3Cbr%3E%262a%3B%20%20%20%20%D0%9F%D0%B0%D1%80%D0%BE%D0%BB%D1%8C%3Cinput%20type%20%3D%20'text'%20name%20%3D%20'password'%262f%3B%3E%3Cbr%3E%262a%3B%20%20%20%20%3Cinput%20type%20%3D%20'submit'%20name%20%3D%20'input'%20value%20%3D%20'%D0%92%D0%BE%D0%B9%D1%82%D0%B8'%20%262f%3B%3E%262a%3B%20%20%20%20%3C%262f%3Bform%3E%262a%3B%7BFOR_GUEST_END%7D%262a%3B%7BFOR_USER%7D%262a%3B%D0%94%D0%BE%D0%B1%D1%80%D0%BE%20%D0%BF%D0%BE%D0%B6%D0%B0%D0%BB%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%7Bname%7D%20%3Ca%20href%20%3D%20''%3E%D0%92%D1%8B%D1%85%D0%BE%D0%B4%3C%262f%3Ba%3E%262a%3B%7BFOR_USER_END%7D%262a%3B%7BFOR_MOD%7D%262a%3B%3Ca%20href%20%3D%20''%3E%D0%90%D0%B4%D0%BC%D0%B8%D0%BD%D0%BA%D0%B0%3C%262f%3Ba%3E%262a%3B%7BFOR_MOD_END%7D%20%20%20%20%262a%3B%262a%3B%20%20%20%20%3C%262f%3Bbody%3E%262a%3B%3C%262f%3Bhtml%3E/

Хотя если мы заменим в регулярку {FOR_GUEST}(\r?\n?)+.+(\r?\n?)+{FOR_GUEST_END}
на
{FOR_MOD}(\r?\n?)+.+(\r?\n?)+{FOR_MOD_END}
все прекрасно работает, и на всех остальных FOR_USER, FOR_ADMIN и т.д. тоже все отлично

1 ответов

12 просмотров

у тебя там получается ошибка в логике. Смотри, пусть мы смотрим от админа, создавая TPL_ADMIN. В него приходит оригинальная строка со всеми тегами. Эта же оригинальная строка уходит в контруктор TPL_ROOT, там по шаблону вырезается гостевая часть и кладется в контент. Но после этого у тебя в конструкторе TPL_ADMIN вырезается рутовая часть но не из модифицированного уже контетна а из оригинального, где гостевая часть еще есть.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта