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

[2.3.x]Мультиники v2.0


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

index.php?app=downloads&module=display&section=screenshot&id=816

Название: Мультиники v2.0

Добавил: WildRAID

Добавлен: 07 Окт 2007

Обновлен: 16 Янв 2009

Категория: IP.Board 2.3.x

 

Данная модификация позволяет объединять свои учётные записи на форуме и свободно переключаться между ними без ввода пароля.

 

Что убрано:

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

Что добавилось:

  • Возможность быстрого создания новых мультов, без необходимости каждый раз проходить полную процедуру регистрации.
  • Возможность выбрать "основного мульта", на email которого будут приходить письма, адресованные другим мультам.
  • Возможность установить "автопереключение" для определённых форумов, при котором активный пользователь будет автоматически меняться на указанного в настройках для этого форума.
  • Ещё что-то, уже не вспомню.

 

Нажмите здесь, чтобы скачать файл

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

1. Как с безопасностью у хака?

2. При создании темы меню пользователя и получаю "Hacking attempt!" :D Это если менять пользователя вверху около надписи "Вошли как: ..."

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

1. Как с безопасностью у хака?

 

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

 

Далее. Объединение между учетными записями происходит только при вводе логина\пароля для той учетки, с которой хочется соединиться. Причем если мы соединяемся с такой учетной записью, у которой уже были мульты, то окажемся связаны и с ними. Другими словами, если злоумышленник получит пароль от одного аккаунта, то у него будет доступ и ко всем остальным. С соответсвующими правами и уровнями доступа.

 

Впрочем, непосредственно за админку можно не опасаться - только те пользователи, которые явно находятся в группе администраторов, имеют доступ в админку. Не их мульты ни в коем случае.

 

2. При создании темы меню пользователя и получаю "Hacking attempt!" Это если менять пользователя вверху около надписи "Вошли как: ..."

 

Довольно странно. А можно поподробнее ... это на тестовом форуме случается, или уже на вашем после установки? Просто уже несколько человек тестировали - проблем не находили. :D

 

Вообще, "Hacking attempt" пишет всего лишь в двух случаях. Первый - если зафиксирована попытка изменить активного пользователя на самого себя. Второй - если пытаются изменить активного пользователя на НЕ своего мульта.

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

"Hacking attempt"

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

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

Сайт для примера что-то недоступен.

Для текстовой версии кстати там сделано? И с аяксом как быстрое редактирование будет происходить?

ПМки будут приходить на основной акк, если челу отправят их на акк мульта?

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

Сайт для примера что-то недоступен.

 

У меня работает.

 

Для текстовой версии кстати там сделано?

 

Оформление как цитата. Версия для печати то же самое.

 

И с аяксом как быстрое редактирование будет происходить?

 

Со стандартным - да. Непосредственно за сохранение сообщения отвечает одна функция и в быстром, и в обычном редактировании.

 

ПМки будут приходить на основной акк, если челу отправят их на акк мульта?

 

Нет. Нет самого понятия основного аккаунта. Все равноправны.

 

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

 

Тогда хорошо все.) Так и должно быть. Главное, чтобы на НЕ мультов не переключало. :D

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

У меня для приватных топиков есть в ./sources/action_public/topics.php вот такой фот фрагмент кода, где происходит непосредственно проверка (лишнее не указываю). Номера пользователей хранятся в $this->topic['topic_read_perms'] через заятую. Подскажи пожалуйста, как подружить это с мультиниками?

 

			if( ( $this->ipsclass->member['id'] != $this->topic['starter_id'] ) && ! preg_match("/(^|,)".$this->ipsclass->member['id']."(,|$)/", $this->topic['topic_read_perms']) )
		{
			$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'missing_files' ) );
		}

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

Если preg_match нравится, то, видимо, можно вот так:

 

if(
$this->topic['starter_id'] != $this->ipsclass->member['id']
and !$this->ipsclass->mult_members->is_mult($this->topic['starter_id'])
and !preg_match("/(^|,)".'(' . $this->ipsclass->member['id'] . '|' . implode('|', array_flip($this->ipsclass->mult_members->mults)) . ')'."(,|$)/", $this->topic['topic_read_perms'])
)

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

Ну нравится или нет - это дело такое. Ты же знаешь, я в этом дуб дубом :D Мод готовый но под 2.1 я его просто перевела под 2.3
Ссылка на комментарий
Поделиться на других сайтах

А еще лучше вот так:

 

if(
$this->topic['starter_id'] != $this->ipsclass->member['id']
and !$this->ipsclass->mult_members->is_mult($this->topic['starter_id'])
and !preg_match("/(^|,)".'(' . $this->ipsclass->member['id'] . '|' . str_replace(',', '|', $this->ipsclass->mult_members->mults_string) . ')'."(,|$)/", $this->topic['topic_read_perms'])
)

 

Побыстрее.

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

М, а в Текстовой версии и Версии для печати подобный вариант (есесно с модификациями переменных) работать не будет?

 

Вот, например, для печативерсия. У меня не получилось %)

		if( $this->topic['topic_read_perms'] && $this->topic['topic_read_perms'] != '*' )
	{
		if( ( $this->ipsclass->member['id'] != $this->topic['starter_id'] ) && ! preg_match("/(^|,)".$this->ipsclass->member['id']."(,|$)/", $this->topic['topic_read_perms']) )
		{
			$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'no_view_topic' ) );
		}
	}

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

Не, не хочет.

 

	if( $topic['topic_read_perms'] && $topic['topic_read_perms'] != '*' )	
{


/*		if( ( $ipsclass->member['id'] != $topic['starter_id'] ) && ! preg_match("/(^|,)".$ipsclass->member['id']."(,|$)/", $topic['topic_read_perms']) )*/

if(
$ipsclass->member['id'] != $topic['starter_id'] 
and !$ipsclass->mult_members->is_mult($topic['starter_id'])
and !preg_match("/(^|,)".'(' . $ipsclass->member['id'] . '|' . str_replace(',', '|', $ipsclass->mult_members->mults_string) . ')'."(,|$)/", $topic['topic_read_perms'])
)	


	{
		$ipsclass->boink_it( $ipsclass->vars['board_url'].'/'.LOFI_NAME.'/index.php' );
	}
}

 

 

echo на $ipsclass->mult_members->is_mult($topic['starter_id']) ничего не выдает.

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

echo на $ipsclass->mult_members->is_mult($topic['starter_id']) ничего не выдает.

 

False выдает значит.) Просто оно в браузер никак не отображается. И условие внутри второго if должно выполняться в этом случае.

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

Восклицательный знак - отрицание. Т.е. если выражение ложно, то возвращает истину. И наоборот.

 

В данном случае логика выглядит так:

 

Если № пользователя НЕ равен № автора темы,

И автор темы НЕ является мультом текущего пользователя,

И ни текущий пользователь, ни его мульты НЕ включены в список пользователей, которым разрешено просматривать данный топик,

 

То перейти на главную страницу lo-fi версии.

 

Другими словами, если мульт есть, то вызов boink_it пропускается, и скрипт работает дальше.

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

Эт я поняла :D) Я не настолько уже ;)) Я и говорю, что мульт есть, а boink_it все равно запускается.

 

Т.е. В полной версии все работает, а тут нет.

 

Ладно, зайду с другой стороны :)

 

в topics.php строка echo $this->ipsclass->mult_members->mults_string; выдает мне результат 2. Т.е. аккаунт номер 3 соединен с аккаунтом номер два. Так?

 

Та же самая строка тока echo $ipsclass->mult_members->mults_string; в текстовой версии ничего не выдает :)

 

Вот...

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

Фантастически странно, т.к. и массив мультов, и строка, и все права создаются при инициализации класса.

 

В /lofiversion/index.php есть ли следующий строки:

 

require_once ROOT_PATH   . "sources/classes/class_mult_members.php";
$ipsclass->mult_members = new mult_members();
$ipsclass->mult_members->ipsclass =& $ipsclass;
$ipsclass->mult_members->init();

 

Особенно интересует последняя.

 

Попробуй еще в index.php для lofiversion вставить куда-нибудь после инициализации класса:

die(print_r($ipsclass->mult_members->mults));

 

Интересует, что напишет.

 

+++++++++

 

Добавлено:

 

Вообще, такое теоретически может происходить только в том случае, если не вызывается функция init для класса mult_members сразу после создания. Если бы сам класс некорректно загружался, то писало бы ошибки.

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

Есть.. есть... я их раз сто перепроверила.

 

Array ( ) 1

 

//PRIVATE_DATA_MOD
require_once ROOT_PATH   . "sources/classes/class_mult_members.php";
$ipsclass->mult_members = new mult_members();
$ipsclass->mult_members->ipsclass =& $ipsclass;
$ipsclass->mult_members->init();

 

Вроде все как у тебя.

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

Есть.. есть...

А в каком месте лофайного index.php они есть?

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

В sources/classes/class_mult_members.php

 

Найти:

$this->have_mults = true;

 

Добавить перед:

die("!!!");

 

Посмотреть, будет ли "умирать" при открытии страниц в lo-fi версии.

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

Разобрались.

 

В /lofiversion/index.php

 

Найти (если есть):

require_once ROOT_PATH   . "sources/classes/class_mult_members.php";
$ipsclass->mult_members = new mult_members();
$ipsclass->mult_members->ipsclass =& $ipsclass;
$ipsclass->mult_members->init();

 

Удалить.

 

Найти:

$ipsclass->member = $ipsclass->sess->authorise();

 

Добавить после:

require_once ROOT_PATH   . "sources/classes/class_mult_members.php";
$ipsclass->mult_members = new mult_members();
$ipsclass->mult_members->ipsclass =& $ipsclass;
$ipsclass->mult_members->init();

 

Проблема была в том, что я работал с модифицированным index.php, в котором авторизация пользователя проходит раньше, чем в обычном.)

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

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

  • 2 недели спустя...

Нашла ошибку.

Если модер открывает полное редактирование поста другого автора, то автор меняется на имя модера.

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

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

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

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