сайт с правами гостя, все отображается как надо.
Если смотреть сайт от пользователя и выше все хорошо, т.е. пользователь не видит то, что должен видеть модер, модер не видит то, что должен видеть админ и т.д.
Проблема в том, что все начиная от 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 и т.д. тоже все отлично
у тебя там получается ошибка в логике. Смотри, пусть мы смотрим от админа, создавая TPL_ADMIN. В него приходит оригинальная строка со всеми тегами. Эта же оригинальная строка уходит в контруктор TPL_ROOT, там по шаблону вырезается гостевая часть и кладется в контент. Но после этого у тебя в конструкторе TPL_ADMIN вырезается рутовая часть но не из модифицированного уже контетна а из оригинального, где гостевая часть еще есть.
Обсуждают сегодня