Не пойму, как этот "пользователь" пробрался
Был у меня написан код, что-то типа:
[[!+modx.user.id:ismember=`Mygroup_1`:then=`1`:else=`2`]]
а в другом месте:
[[!+modx.user.id:ismember=`Mygroup_2`:then=`3`:else=`4`]]
Раньше все работало прекрасно, потом обновился до версии 2.5.0, а недавно до 2.5.2 И заметил, что если пользователь не авторизован, то в варианте кода №2 выводится 4, а в варианте кода №1 выводится 1. Хотя, неавторизованый пользователь не должен принадлежать ни к Mygroup_1, ни к Mygroup_2. Как он «пробрался» в группу 1, и как его оттуда убрать?
[[!+modx.user.id:ismember=`Mygroup_1`:then=`1`:else=`2`]]
а в другом месте:
[[!+modx.user.id:ismember=`Mygroup_2`:then=`3`:else=`4`]]
Раньше все работало прекрасно, потом обновился до версии 2.5.0, а недавно до 2.5.2 И заметил, что если пользователь не авторизован, то в варианте кода №2 выводится 4, а в варианте кода №1 выводится 1. Хотя, неавторизованый пользователь не должен принадлежать ни к Mygroup_1, ни к Mygroup_2. Как он «пробрался» в группу 1, и как его оттуда убрать?
Комментарии: 5
В админке ты точно не авторизован сам в этот момент?
в том-то и дело, что нет. Про Админку я в курсе. Пробовал в разных браузерах, везде всё одинаково. Я подумал, может быть «ismember» неправильно стало работать. Но во второй группе всё нормально работает, а в первой — нет. Пробовал выводить id пользователя, так он пишет, что «0». Это неавторизованный пользователь, но он же не принадлежит группе №1, почему на него ismember срабатывает, никак не пойму.
P.S. Я в другом топике вопрос про ошибку задавал (https://modx.pro/help/10665/), может быть это всё взаимосвязано как-то?!
P.S. Я в другом топике вопрос про ошибку задавал (https://modx.pro/help/10665/), может быть это всё взаимосвязано как-то?!
Немного переделал сниппет Bob Ray'а под себя, попробуйте:
<?php
/* IsMember Snippet */
$groups = $modx->getOption('groups', $scriptProperties);
$groups_array = explode(',', $groups);
if ($modx->user->isMember($groups_array)) {
if (preg_match('/^@INLINE/',$yesChunk)) {
return substr($yesChunk, 7);
} else {
return $modx->getChunk($yesChunk);
}
} else {
if (preg_match('/^@INLINE/',$noChunk)) {
return substr($noChunk, 7);
} else {
return $modx->getChunk($noChunk);
}
}
Вызывать можно inline или чанками[[!IsMember?
&groups=`Users`
&yesChunk=`@INLINE <h2>Вы в группе А</h2>`
&noChunk=`@INLINE <div class="button>Вступить в группу А</div>`
]]
[[!IsMember?
&groups=`Group_B,Group_C`
&yesChunk=`visible_chunk_for_groups_B_C`
]]
а с сессиями в PHP на сервере не может быть связано никак?
поставил костыль:
[[!+modx.user.id:isloggedin=`1`:then=`[[!+modx.user.id:ismember=`Mygroup_1`:then=`1`:else=`2`]]
`:else=`2`]]
но это как-то ненормально. И ошибка «flush_session_err» как-то напрягает немного.
[[!+modx.user.id:isloggedin=`1`:then=`[[!+modx.user.id:ismember=`Mygroup_1`:then=`1`:else=`2`]]
`:else=`2`]]
но это как-то ненормально. И ошибка «flush_session_err» как-то напрягает немного.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.