Экспертный ФАК по SSI (Expert SSI FAQ)

Автор Avdenago, 18 ноября 2006, 00:22:01

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Avdenago

Экспертный  ФАК по SSI (Expert SSI FAQ)

Перевод. Оригинал тут:
http://www.simplemachines.org/community/index.php?topic=13205.0

Перед вами Экспертный ФАК по SSI. Для лучшего понимания рекомендуем вначале прочитать Базовый  и Углубленный ФАК по SSI.
Данный ФАК освещает часто задаваемые вопросы по SSI и дает на них ответы в виде советов и приемов. В конце сообщения вы можете найти текстовые примеры рассмотренных скриптов.
Все вопросы и впечатления, а также обсуждения данного материала можно оставлять в данной теме.

!ВАЖНО: НЕ ИЗМЕНЯЙТЕ ФАЙЛ 'SSI.PHP'!
(Все описанное ниже делается без каких-либо изменений в данном файле)

Как я могу проверить состоит ли пользователь в какой-либо специальной группе?
До этого мы разбирали как различить Гостя, пользователя и Администратора. Теперь попробуем выделить специальную группу.
Пример:У вас есть сайт и, соответственно, форум. Также у вас есть специальная группа пользователей, для которой вы хотите сделать доступной какую-либо область, недоступную для других.
Для начала нам необходимо определить идентификатор (ID) нужной нам группы. Для этого идем в Администрирование->Группы Пользователей и для нужной группы нажимаем "Изменить". Теперь смотрим на строку адреса в браузере и видим следующее:
http://forum.belweb.by/index.php?action=membergroups;sa=edit;group=6
Как видим ID будет 6 (group=6). Теперь, когда у нас есть ID группы мы будем использовать следующийкод:

<?php

if (in_array(6$user_info['groups']))
   {
       echo 
'Ого! Я в группе 6!';
   }
else
   {
       echo 
'Извините, но у вас нет прав для просмотра страницы.';
   }

?>



Что-нибудь еще?
На самом деле еще есть углубленные настройки SSI, которые вы можете изменить под себя.

<?php

$ssi_gzip 
false;
$ssi_ban true;
$ssi_theme '2';
$ssi_layers = array('main');

ob_start();

require(
"/SSI.php");

?>


Пояснения к коду:
$ssi_gzip = false;  - Означает что gzip выключен.
$ssi_ban = true; - Означает, что забаненные на форуме пользователи будут также забаненны на SSI страницах.
$ssi_theme = '2'; - Использует тему оформления [изображения, кнопки, цвета] с ID=2, что соответствует обычно Классической теме.
$ssi_layers = array('main'); Использование пары главного подшаблона.
ob_start(); - Отключение ошибок.
require("/SSI.php");  - Указываем после переменных, но перед любым другим кодом.


На самом деле все не так уж и сложно...  Но ведь это Экспертный ФАК. А в недалеком будущем появится и Мастер ФАК.

-Lamper


От переводчика:
Если данный ФАК помог вам и ответил на ваши вопросы, или наоборот у вас появились вопросы, а также если вы нашли неточности или ошибки, вы можете обсудить его в данной теме.
Также следует отметить, что вышеприведенный перевод, довольно таки вольный...
Поэтому даже в приведенном коде могут быть ошибки и неточности, тем ценнее будет ваша помощь обсуждении и в более детальном описании данных вопросов.

Matveyich

было бы очень полезным перечислить вобще все возможные элементы массивов $context['user'][...]
$user_info[...]
может оно где-то есть в файлах SSI, я просто не очень старался найти.
но вот когда, что-то надо, то начинаешь рыцца во всех подряд функциях, чтоб найти что-нить нужное.
может кто-то знает где посмотреть все элементы, или просто напишите какие там есть.

буду весьма благодарен, и наверно не только я.

Mirlen

print_r($context)
print_r($user_info)
поможет :) все более-менее и очевидно понятно  O0

Aianostre

#3
$ssi_theme = '2'; — не работает  wallbash
Возможно я не правильно поняла, как оно должно работать...

Mavn

вообще то работает! Приведите полностью код что и как делаете
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Aianostre

Спасибо, но я уже разобралась сама. На самом деле, действительно по началу не совсем правильно поняла, как оно должно работать.

webserfer

#6
А у меня не получается тут кое-что

require("blablabla/SSI.php"); \
$ssi_theme = '2';
ssi_menubar();

А выводит всеравно не менюшку, а тупо текст
---
Короче уже справился - css подрисовал

Drakonsa


webserfer

Все на месте было, короче css подгрузил и все стало норм

Vvva

?php

if (in_array(6, $user_info['groups']))
   {
       echo 'Ого! Я в группе 6!';
   }
else
   {
       echo 'Извините, но у вас нет прав для просмотра страницы.';
   }

?>


Это дает доступ к странице одной группе 6,а как дать доступ двум, трем группам? например 6,7,8 ? :)

Mavn

поставить через запятую пробовали?
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Vvva

Цитата: Mavn от 05 декабря 2010, 21:53:06
поставить через запятую пробовали?
Конечно, но доступ тогда только у одной группы(которая стоит первой)..:(