Можно ли дать такие права гостям?

Автор bacek, 07 марта 2006, 19:13:19

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

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

bacek

Здравствуйте, с удовольствием пользуюсь SMF 1.1 RC2, однако возник такой вопрос: у меня форум закрытый, то есть гости могут только читать сообщения, а писать не могут. Но есть отельный раздел "Мнения о сайте" и хочется чтобы туда могли писать все - даже гости. Скажите, можно ли как-то организовать права таким образом, чтобы гости могли писать только в один конкретный раздел, а во всех остальных могли только читать?

Заранее спасибо.

P.S.
Если Вам нужно для принятия решения увидеть сам форум, то он находится на сайте http://noblit.ru

dimsat1

#1
 Вопрос: как можно зделать так, чтоб гость мог отвечать, не вводя своего email_а? Тоесть, чтоб гость написал свой ник и писал сообщение.. ????

Mavn

dimsat1
Администрирование - Права доступа- выбираешь группу пользователей Гости устанавливаешь --Отправка сообщений в тему вот и все гость может оставлять сообщения
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

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

bacek

Цитата: Mavn от 09 марта 2006, 21:10:40
dimsat1
Администрирование - Права доступа- выбираешь группу пользователей Гости устанавливаешь --Отправка сообщений в тему вот и все гость может оставлять сообщения
А чтобы гостимогли писать только в ОДИНКОНКРЕТНЫЙ разел?

dimsat1

Спасиб Admin... :) Это понятно.. Я вот очём: Когда гость жмёт ответ, ему необходимо заполнить пункты Имя: и Email:. Иначе если это не заполнить, форум сообщение не примет и напишет: Следующие ошибки возникли при попытке отправки сообщения:
Отсутствует имя.
Отсутствует Email адрес.
Неправильный Email адрес.

Так вот вопрос в том, как зделать так, чтоб пользователю ненадо было заполнять эти пункты(или вообще их убрать), а просто.. нажать кнопку Ответ, написать текст сообщения и отправить его? :)


Mavn

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

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

dimsat1

#6
Ок!  :) 1ое понял, а в каком файле механизм?...

Mavn

Скорее всего в Post.php точнее сейчас сказать не смогу потому как смотреть нужно куда и чего
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

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

dimsat1

Я так понял, что надо отключить проверку имени и email для гостей в Post.php. Но в какой строке и как ???

Mavn

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

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

dimsat1

Ясно. :) Тогда как убрать проверку мыла у гостя при написании им сообщения?

Mavn

Честно говоря вопросом не задавался специально для этого. В коде капатся нужно у нас сейчас на работе напряг так что пока без ответа
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

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

dimsat1

#12
Спасиб :) Будет время, посмотрите ;)
Помойму это зарыто здесь:

// Validate the name and email.
            if (!isset($_REQUEST['guestname']) || trim(strtr($_REQUEST['guestname'], '_', ' ')) == '')
               $context['post_error']['no_name'] = true;
            elseif (strlen($_REQUEST['guestname']) > 25)
               $context['post_error']['long_name'] = true;
            else
            {
               require_once($sourcedir . '/Subs-Members.php');
               if (isReservedName(htmlspecialchars($_REQUEST['guestname'])))
                  $context['post_error']['bad_name'] = true;
            }

            if (empty($modSettings['guest_post_no_email']))
            {
               if (!isset($_REQUEST['email']) || $_REQUEST['email'] == '')
                  $context['post_error']['no_email'] = true;
               elseif (preg_match('~^[0-9A-Za-z=_+\-/][0-9A-Za-z=_\'+\-/\.]*@[\w\-]+(\.[\w\-]+)*(\.[\w]{2,6})$~', stripslashes($_REQUEST['email'])) == 0)
                  $context['post_error']['bad_email'] = true;
            }
         }

Но что и где подправить?

Grek

Первое. Там где ты указал комментируй:  if (empty($modSettings['guest_post_no_email']))
            {
               if (!isset($_REQUEST['email']) || $_REQUEST['email'] == '')
                  $context['post_error']['no_email'] = true;
               elseif (preg_match('~^[0-9A-Za-z=_+\-/][0-9A-Za-z=_\'+\-/\.]*@[\w\-]+(\.[\w\-]+)*(\.[\w]{2,6})$~', stripslashes($_REQUEST['email'])) == 0)
                  $context['post_error']['bad_email'] = true;
            }
То есть ты получишь следующее:
// Validate the name and email.
                                if (!isset($_REQUEST['guestname']) || trim(strtr($_REQUEST['guestname'], '_', ' ')) == '')
                                        $context['post_error']['no_name'] = true;
                                elseif (strlen($_REQUEST['guestname']) > 25)
                                        $context['post_error']['long_name'] = true;
                                else
                                {
                                        require_once($sourcedir . '/Subs-Members.php');
                                        if (isReservedName(htmlspecialchars($_REQUEST['guestname'])))
                                                $context['post_error']['bad_name'] = true;
                                }
                                /*
                                if (empty($modSettings['guest_post_no_email']))
                                {
                                        if (!isset($_REQUEST['email']) || $_REQUEST['email'] == '')
                                                $context['post_error']['no_email'] = true;
                                        elseif (preg_match('~^[0-9A-Za-z=_+\-/][0-9A-Za-z=_\'+\-/\.]*@[\w\-]+(\.[\w\-]+)*(\.[\w]{2,6})$~', stripslashes($_REQUEST['email'])) == 0)
                                                $context['post_error']['bad_email'] = true;
                                }   */
                        }


Второе. Ищи строку 1222:
Там тебе нужно получить следующее:

// Validate the name and email.
                                if (!isset($_REQUEST['guestname']) || trim(strtr($_REQUEST['guestname'], '_', ' ')) == '')
                                        $context['post_error']['no_name'] = true;
                                elseif (strlen($_REQUEST['guestname']) > 25)
                                        $context['post_error']['long_name'] = true;
                                else
                                {
                                        require_once($sourcedir . '/Subs-Members.php');
                                        if (isReservedName(htmlspecialchars($_REQUEST['guestname'])))
                                                $context['post_error']['bad_name'] = true;
                                }
                                /*
                                if (empty($modSettings['guest_post_no_email']))
                                {
                                        if (!isset($_REQUEST['email']) || $_REQUEST['email'] == '')
                                                $context['post_error']['no_email'] = true;
                                        elseif (preg_match('~^[0-9A-Za-z=_+\-/][0-9A-Za-z=_\'+\-/\.]*@[\w\-]+(\.[\w\-]+)*(\.[\w]{2,6})$~', stripslashes($_REQUEST['email'])) == 0)
                                                $context['post_error']['bad_email'] = true;
                                }   */
                        }


Сразу предупреждаю. Если кого-то забанил по email адресу, считай бана нет, так как проверки на email не будет.

dimsat1

#14
Спасибо!!!!  :)
Вот только про второй код, я непонял. Он копия первого. Строку 1222 нашёл,
и вместо чего его надо вставить?? 

dimsat1

ЦитироватьВторое. Ищи строку 1222:
Там тебе нужно получить следующее:

// Validate the name and email.
                                if (!isset($_REQUEST['guestname']) || trim(strtr($_REQUEST['guestname'], '_', ' ')) == '')
                                        $context['post_error']['no_name'] = true;
                                elseif (strlen($_REQUEST['guestname']) > 25)
                                        $context['post_error']['long_name'] = true;
                                else
                                {
                                        require_once($sourcedir . '/Subs-Members.php');
                                        if (isReservedName(htmlspecialchars($_REQUEST['guestname'])))
                                                $context['post_error']['bad_name'] = true;
                                }
                                /*
                                if (empty($modSettings['guest_post_no_email']))
                                {
                                        if (!isset($_REQUEST['email']) || $_REQUEST['email'] == '')
                                                $context['post_error']['no_email'] = true;
                                        elseif (preg_match('~^[0-9A-Za-z=_+-/][0-9A-Za-z=_'+-/.]*@[w-]+(.[w-]+)*(.[w]{2,6})$~', stripslashes($_REQUEST['email'])) == 0)
                                                $context['post_error']['bad_email'] = true;
                                }   */
                        }


Сразу предупреждаю. Если кого-то забанил по email адресу, считай бана нет, так как проверки на email не будет.
Вот тут совсем ничего непонял, толи я неразбираюсь, толи Вы не тот код написали...  Подскажите пож-ста понятнее...
???? :(
Опубликовано: 30 Марта 2006, 01:01:39
???
Опубликовано: 05 Апреля 2006, 21:27:42
Может всётаки кто поможет,  как убрать проверку мыла в сообщениях гостей? Чтоб любой гость мог написать сообщение, не вводя сваего мыла.

Олег Верещагин

Заметил, что никто так и не ответил на вопрос, можно ли сделать так, чтобы гости могли отправлять сообщения в конкретный раздел? Для меня это тоже актуально, т.к. хочу сделать гостевую книгу прямо на форуме.

Mavn

#17
Заходишь в управление разделами выбираешь нужный раздел нажимаешь "права" и там указываешь кому какие права дать. Здесь создан специальный раздел для гостей так что это работает :)
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

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

Олег Верещагин

Захожу в Администрирование - Разделы форума - Создание/редактирование разделов. Получаю список разделов. Напротив нужного раздела нажимаю ссылку "Изменить". Вижу: "Группы пользователей.
Группы пользователей, которые имеют доступ к разделу." Если я правильно понимаю, там отмечаются те группы пользователей, которые могут ВИДЕТЬ указанный раздел.
Далее видим "Права доступа раздела" - Нормальный, Без голосования, Только ответы,
Только для чтения.
Мне же нужно, чтобы все группы, включая группу "Гости" могли не только видеть этот раздел, но и ОТВЕЧАТЬ в нём. А вот в остальных разделах могли отвечать все, кроме группы "Гости".
Как мне это сделать? Может, я не туда залез? Можно поподробнее?

Mavn

Администрирование - Разделы форума - Разделы форума - возле нужного раздела есть кнопка "права"

либо Администрирование - Права доступа - Права доступа по разделам выбираешь раздел и переключаешь в локально и там выставляешь права



SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

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

Олег Верещагин

#20
Может, я чего-то не понимаю, но в "Администрирование - Разделы форума - Разделы форума" никакой кнопки "Права" нету. А в "Администрирование - Права доступа - Права доступа по разделам" переключатель "локально" также отсутствует. Версия форума 1.1RC2.
Скриншоты прилагаю.

Mavn

#21
Хех значит где то нужно еще что то включить чтобы появилось то что есть у меня  ;). Скажу сразу никаких модов у меня не стоит :)! Это стандартные мульки форума :)
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

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

Mavn

Для того чтобы появилась такая возможность нужно ее включить Администрирование - Права Доступа - Настройки - Включить выставление отдельных прав доступа для каждого раздела (Эта функция позволяет выставить отдельные права для каждого раздела, для каждой группы пользователей).
После включения соответственно появится данная функция на форуме и ты сможешь проставлять нужнsе тебе права для каждого раздела и группы пользователей.
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

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

Олег Верещагин

Вот спасибо, Mavn! O0 И как я не догадался?!  idiot

_andrey

Цитата: Grek от 20 марта 2006, 15:46:00
Первое. Там где ты указал комментируй:  if (empty($modSettings['guest_post_no_email']))
            {
               if (!isset($_REQUEST['email']) || $_REQUEST['email'] == '')
                  $context['post_error']['no_email'] = true;
               elseif (preg_match('~^[0-9A-Za-z=_+\-/][0-9A-Za-z=_\'+\-/\.]*@[\w\-]+(\.[\w\-]+)*(\.[\w]{2,6})$~', stripslashes($_REQUEST['email'])) == 0)
                  $context['post_error']['bad_email'] = true;
            }
То есть ты получишь следующее:
// Validate the name and email.
                                if (!isset($_REQUEST['guestname']) || trim(strtr($_REQUEST['guestname'], '_', ' ')) == '')
                                        $context['post_error']['no_name'] = true;
                                elseif (strlen($_REQUEST['guestname']) > 25)
                                        $context['post_error']['long_name'] = true;
                                else
                                {
                                        require_once($sourcedir . '/Subs-Members.php');
                                        if (isReservedName(htmlspecialchars($_REQUEST['guestname'])))
                                                $context['post_error']['bad_name'] = true;
                                }
                                /*
                                if (empty($modSettings['guest_post_no_email']))
                                {
                                        if (!isset($_REQUEST['email']) || $_REQUEST['email'] == '')
                                                $context['post_error']['no_email'] = true;
                                        elseif (preg_match('~^[0-9A-Za-z=_+\-/][0-9A-Za-z=_\'+\-/\.]*@[\w\-]+(\.[\w\-]+)*(\.[\w]{2,6})$~', stripslashes($_REQUEST['email'])) == 0)
                                                $context['post_error']['bad_email'] = true;
                                }   */
                        }


Второе. Ищи строку 1222:
Там тебе нужно получить следующее:

// Validate the name and email.
                                if (!isset($_REQUEST['guestname']) || trim(strtr($_REQUEST['guestname'], '_', ' ')) == '')
                                        $context['post_error']['no_name'] = true;
                                elseif (strlen($_REQUEST['guestname']) > 25)
                                        $context['post_error']['long_name'] = true;
                                else
                                {
                                        require_once($sourcedir . '/Subs-Members.php');
                                        if (isReservedName(htmlspecialchars($_REQUEST['guestname'])))
                                                $context['post_error']['bad_name'] = true;
                                }
                                /*
                                if (empty($modSettings['guest_post_no_email']))
                                {
                                        if (!isset($_REQUEST['email']) || $_REQUEST['email'] == '')
                                                $context['post_error']['no_email'] = true;
                                        elseif (preg_match('~^[0-9A-Za-z=_+\-/][0-9A-Za-z=_\'+\-/\.]*@[\w\-]+(\.[\w\-]+)*(\.[\w]{2,6})$~', stripslashes($_REQUEST['email'])) == 0)
                                                $context['post_error']['bad_email'] = true;
                                }   */
                        }


Сразу предупреждаю. Если кого-то забанил по email адресу, считай бана нет, так как проверки на email не будет.
Спасибо помогло работает
только хочу внести поправку
ЦитироватьВторое. Ищи строку 1222:
Там тебе нужно получить следующее:
у меня версия SMF 1.1 RC2  и в пост .пхп закоментировал строку с 1229 по 1234
// If the poster is a guest evaluate the legality of name and email.
if ($posterIsGuest)
{
$_POST['guestname'] = !isset($_POST['guestname']) ? '' : trim($_POST['guestname']);
$_POST['email'] = !isset($_POST['email']) ? '' : trim($_POST['email']);

if ($_POST['guestname'] == '' || $_POST['guestname'] == '_')
$post_errors[] = 'no_name';
if (strlen($_POST['guestname']) > 25)
$post_errors[] = 'long_name';
         
if (empty($modSettings['guest_post_no_email']))
{
// Only check if they changed it!
/*
if (!isset($row) || $row['posterEmail'] != $_POST['email'])
{
if (!allowedTo('moderate_forum') && (!isset($_POST['email']) || $_POST['email'] == ''))
$post_errors[] = 'no_email';
if (!allowedTo('moderate_forum') && preg_match('~^[0-9A-Za-z=_+\-/][0-9A-Za-z=_\'+\-/\.]*@[\w\-]+(\.[\w\-]+)*(\.[\w]{2,6})$~', stripslashes($_POST['email'])) == 0)
$post_errors[] = 'bad_email';
}   */


ещераз спасибо

_andrey

И вот по теме на Мод ссылку нашол . отключает включает у гостя  емаил
Anonymous Posting Mod
Тип пакета:  Modification
Версия:  1.01
Автор:  winrules
Расположение файла:  http://mods.simplemachines.org/downloads/410/AnonymousPosting1-01.zip
Описание:  This mod will add an option to either just ask for a name when a guest posts, or not ask for an e-mail or name. You can change the option in Features and Settings.

dimsat1