Перейти к контенту
  • 0

Хак предупреждений


Вопрос

Репутация это совсем нето, это неинетресно. Вот на PhpBB есть такой хак пердупреждений, тама даются квадратики. Если пользователь получил уже два квадратика то третий это автономный бан. Или может можно репутацию под этот хак подделать?

Пример на PhpBB можно увидеть тут realworld.ru/forum

Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 110
  • Создана
  • Последний ответ

Лучшие авторы в этом вопросе

Лучшие авторы в этом вопросе

Рекомендуемые сообщения

  • 0

Остап

Ну так как сделать чтобы банило после того как выстовиш 3 замечания (мгновено перекрывало доступ на форум и переносило в группу "Баннед") идеи есть?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Song

Миш, действительно, может ты помнишь, КАКИМИ словами ты описал это ... Я тоже пытался найти, тщетно ... Хотя помню, что ты объяснял ...

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Еще раз, для медленных :D

 

Правильно ли я понял, что для того, чтобы все пользователи видели свои предупреждения, и предупреждения, которые есть у других пользователей, необходимо в:

Topics.php

Закомментируй этот ИФ и скобки открывающие и закрывающие от него

--------------------------------

if (

      ( $ibforums->member['is_mod'] AND $ibforums->member['allow_warn'] )

   or ( $ibforums->member['g_is_supmod'] == 1 )

   or ( $ibforums->vars['warn_show_own'] and ( $ibforums->member['id'] == $member['id'] ) )

     )

---------------------------------

 

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

 

ВОПРОС: А как тогда сделать, чтобы Гости этих предупреждений не видели?

Вероятно, вставить вместо закомментированного IF другой?

if (

      ( $ibforums->NOT member['guest'] )

)

 

или вот так ?

if ( ( $ibforums->vars['warn_show_own'] and ( $ibforums->member['id'] == "НЕ НОМЕР ГОСТЯ" ) )

 

Идею я понял, синтаксис поправьте пожалуйста ? ;)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Чтобы нелазить по темам я решил описать тут как сделать, чтобы при достижение максимального уровня предупреждений пользователь переносился в оперделеную группу (например: Banned)

 

(с) Song :D

 

Открыть файл warn.php

/sources/misc/warn.php

 

Найти:

 

if ( $warn_level > $ibforums->vars['warn_max'] )
 {
  $warn_level == $ibforums->vars['warn_max'];
 }

 

Заменить на:

 

if ( $warn_level == $ibforums->vars['warn_max'] )
{
        $DB->query("UPDATE ibf_members SET mgroup=номер_группы_бана WHERE id='".$this->warn_member['id']."'");
}

Добавлено в [mergetime]1090489157[/mergetime]

Angus2

Я посматрел свой файл topic.php у меня сделано так:

 

if (
      ( $ibforums->member['is_mod'] AND $ibforums->member['allow_warn'] )
   or ( $ibforums->member['g_is_supmod'] == 1 )
   or ( $ibforums->vars['warn_show_own'] and ( $ibforums->member['id'] == $member['id'] ) )
     )

Ссылка на комментарий
Поделиться на других сайтах

  • 0
А как тогда сделать, чтобы Гости этих предупреждений не видели?

Проверка на Гостя:

if (! $ibforums->member['id'])

{

то гость;

}

иначе

{

не гость;

}

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Angus2

Да, замени этот ИФ

if (
      ( $ibforums->member['is_mod'] AND $ibforums->member['allow_warn'] )
   or ( $ibforums->member['g_is_supmod'] == 1 )
   or ( $ibforums->vars['warn_show_own'] and ( $ibforums->member['id'] == $member['id'] ) )
     )

на

 

if ( $ibforums->member['id'])

 

Тем самым отсечёшь гостей ...

 

Давай, чтоб ты не смешил меня наночь

if (
      ( $ibforums->NOT member['guest'] )
)

( $ibforums->member['id'] == "НЕ НОМЕР ГОСТЯ" ) )

, разберём кое что ... По полочкам ... Вот это :

if (
      ( $ibforums->member['is_mod'] AND $ibforums->member['allow_warn'] )
   or ( $ibforums->member['g_is_supmod'] == 1 )
   or ( $ibforums->vars['warn_show_own'] and ( $ibforums->member['id'] == $member['id'] ) )
     )

 

$ibforums->member['is_mod'] - модератор ли чел

$ibforums->member['allow_warn'] - разрешено ли челу давать поощрения или наказания

$ibforums->member['g_is_supmod'] == 1 - супермодератор ли чел

$ibforums->vars['warn_show_own'] - разрешено ли челу ВИДЕТЬ собственный рейтинг

$ibforums->member['id'] != 0 - если отличается айди пользователя от нуля, то чел не гость

 

Теперь перефразируем на русский вопрос, заданный в ИФе :

 

ЕСЛИ (

( Чел модератор А_ТАКЖЕ Челу разрешено повышать и понижать рейтинг) 1 условие

ИЛИ ( Чел суперМодер ) 2 условие

ИЛИ ( Челу разрешено ВИДЕТЬ собственный рейтинг А_ТАКЖЕ ( Айди чела СОВПАДАЕТ_С(==) Айди чела Профиль которого или в теме профиль которого просматривает чел ) 3 условие)

)

{

Так вот, если ХОТЯБЫ ОДНО из 3 условий совпадает, выполняется код, что тут

 

Кстати, вот тут, чуть нижжее, уже есть другое условие, на то, МОЖЕТ ЛИ ЧЕЛ МЕНЯТЬ рейтинг

}

 

ЗЫ Ну я дал :D;):)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Да ты просто МОЛОДЕЦ :D)))

 

я догадался немножко сам, но все равно спасибо за подробные разъяснения (вчера сделал уже).

 

НО!! (Уточнение) - что же получается, модераторы могут давать предупреждения пользователям, даже если они находятсе не в том форуме, который модерирует этот модератор???

Я думал, вполне естественно, что модератор имеет возможность ставить придупреждалки только в своем форуме, а в соседних он не может предупреждать. А вот тут, ниже:

if ( ( $ibforums->member['is_mod'] AND $ibforums->member['allow_warn'] ) or ( $ibforums->member['g_is_supmod'] == 1 ) )

 

не очень понятно с allow_warn. Вообще-то эти allow раздаются при назначении Пользователя модератором форума. И, теоретически, он может быть модератором 2х форумов, в одном котором может ставить Предупреждения, а в другом - нет. Так что же? $ibforums->member['allow_warn'] она выдает какие значения ? Уникальные именно для этого форума ?

 

P.S. Почему спрашиваю, что-то у модераторов появились плюсики везде в форумах, даже в тех, где они не модерируют.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
если они находятсе не в том форуме, который модерирует этот модератор???

Да, IPB этим грешит.

В Topics.php на эту тему можно проверять переменную $this->moderator - это зависит от текущего форума.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

theIggs

Не имеет смысла. Во первых - в профайле то же самое, во вторых, найдут посты чела в своём разделе и накажут :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

ЭЭЭэээээ.... значит что ?

if ( ( $ibforums->member['is_mod'] AND $ibforums->member['allow_warn'] AND $this->moderator ) or ( $ibforums->member['g_is_supmod'] == 1 ) )

не поможет ????

 

А как же тогда ? За всеми-то не уследишь, зачем тут конфликты модераторов нужны ? К томуже, они получают право ставить предупреждения в разделах, уж в которых им бы не стоило такого делать. Надо бы соблазн сразу убрать.

 

 

P.S. Ээээ, глупость написал ;) не пинайте меня, я в PHP лох, зато в другом силен :))) Ну, вот если бы было можно вот так вот легко поставить проверочку на признак того, что модератор находится в своем модерируемом топике - то было бы супер! :D

Изменено пользователем Angus2
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Не имеет смысла. Во первых - в профайле то же самое, во вторых, найдут посты чела в своём разделе и накажут

имеет, модераторы когда злые могут и в другом разделе наказать :D

А в профиле делается просто - убираются кнопочки + и -. Таким образом, чтобы модератор мог наказывать только из-под ника, ну и приделать ещё соответственно, чтобы только у себя в разделе. Насчёт последнего, это был мой самый первый вопрос, когда я пришёл на этот форум. Ответил мне на его Игс, за что я ему благодарен ;) Поищите найдёте.

Правда у меня "ненужный" раздел отсекался в warn.php, т.е. фактически у любого модератора были кнопочки + и - в любом разделе, но наказывать фактически мог только в своём. В последствии, я и кнопочки убрал.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Angus2

Во первых неправильно.

if ( ( $this->moderator AND $ibforums->member['allow_warn'] ) or ( $ibforums->member['g_is_supmod'] == 1 ) )

Это раз ... Модера ВАЩЕ нада заменить на модера в ЭТОМ ФОРУМЕ ...Второе, не поможет в общем ...

Во первых - в профайле то же самое, во вторых, найдут посты чела в своём разделе и накажут
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Song !

Нашел твой пост, вижу что менял ты Topics.php и warn.php

 

Если с warn.php все, в принципе, понятно, то вот про Topics - проверка прорисовки плюсиков - ты сделал как советовал Иггс ?

 

Как там с производительностью в Topics и уменьшением количества запросов ? :D

 

Вставил выше по тексту ? Типа:

$massive=array();

 

$massiv[ $row['id'] ] = $DB->query("SELECT * FROM ibf_moderators WHERE (forum_id = '".$row['forum_id']."' AND (member_id='".$ibforums->member['id']."' OR (is_group=1 AND group_id='".$ibforums->member['mgroup']."')))");

 

или как то так ?

Видишь, я на год с отставанием иду почти ;)

Я так понимаю, надо просто завести пользовательскую переменную, находится ли модератор в своем форуме, или чужом (TRUE/FALSE).

Запрос делать один раз в начале Topics.php ? Заполнять переменную и все. А потом легко ее проверять в этом IF'е, что сверху.

 

 

P.S. Кстати, а зачем вообще модифицирить warn.php ?

Ну смотри, мы убираем плюсики у модераторов в форумах, которые они не модерируют - и все, зачем права-то менять ? :) Им и так некуда тыкать будет чтобы изменить статус Предупреждений ?

Ссылка на комментарий
Поделиться на других сайтах

  • 0
ы сделал как советовал Иггс ?

нет, у меня по-другому, тут трудно рассказать, надо многое затрагивать

 

Я так понимаю, надо просто завести пользовательскую переменную, находится ли модератор в своем форуме, или чужом (TRUE/FALSE).

зачем? просто проверка $this->moderator чем тебя не устраивает?

 

P.S. Кстати, а зачем вообще модифицирить warn.php ? Ну смотри, мы убираем плюсики у модераторов в форумах, которые они не модерируют - и все, зачем права-то менять ?Им и так некуда тыкать будет чтобы изменить статус Предупреждений ?

Потому что могут подделать параметры командной строки.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Хммм.... если $this->moderator действительно выдает TRUE/FALSE на модератора_в_этом_форуме то тогда я не пойму, зачем ты делал такую комплексную модификацию с DB запросами в Topics.php у себя в посте. И говорил, что плюсики прорисовываются для каждого пользователя, поэтому может подтормаживать. Что мешало сделать так же ?

 

Ведь суть то идеи, собственно, проста. Чтобы у модераторов плюсики появлялись только тогда, когда они смотрят посты в *своем* форуме. А в чужих форумах - как и у всех - простые квадратики статуса предупреждений.

 

P.S. Но насколько я понял Остапа, $this->moderator выдает глобально, поэтому он говорит - не поможет :D

 

 

P.P.S. Про подделки параметров - согласен, что уязвимо, но вот это уже как раз другой вариант - что можно будет выявить и пресечь ;) Все-таки общая проверка на модератора сохраняется, а так - все свои же в целом. Тут уже пытаться надо, специально стараться. А явный соблазн - он убран.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

$this->moderator ТОЛЬКО на факт прорисовки + и -.

 

P.S. Но насколько я понял Остапа, $this->moderator выдает глобально, поэтому он говорит - не поможет

Не знаю, может он и прав. Но вот я смотрю исходник и вижу что в этой переменной появляется ссылка на результат запроса, ТОЛЬКО если текущий пользователь - модератор в этом разделе либо он принадлжит той группе пользователей, которые являются модераторами в этом форуме.

 

Добавлено в [mergetime]1090576246[/mergetime]

зачем ты делал такую комплексную модификацию с DB запросами в Topics.php у себя в посте

я не делал, я думал, что так можно, но в последствии я не стал ставить этот запрос, потому как это тормозит. А что касается if ($this->moderator) {... } мне тогда эта идея даже в голову не пришла :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0
У меня проблема, как сделать чтобы все могли смотерть за что получил наказание тот или иной участник? ну когад тыкашеь на циферку дурго пользователя чтобы посматреть за что ему дали замечания там пишет что у вас нет прав. Как это и где это поправить?
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Я так понимаю корни растут отсюда

warn.php

        else if ( $ibforums->vars['warn_show_own'] and $ibforums->member['id'] == $ibforums->input['mid'] )

         {

          $pass               = 1;

          $this->can_ban      = 0;

       $this->can_mod_q    = 0;

       $this->can_rem_post = 0;

       $this->times_a_day  = 0;

       $this->type         = 'member';

         }

         else

         {

          $pass = 0;

         }

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

 

Я бы предположил, что следует убрать в if'е этот самый == $ibforums->input['mid'], и тогда будет все ОК :D

 

Но пусть гранды поправят меня.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.