Double Account Preventer

Здесь авторы могут постить бета-версии своих модификаций для phpBB 3.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Double Account Preventer

Сообщение Shredder »

А что такое "CLONE+"?
Нужно, чтобы только клон по cookie там выводился? Или вообще все клоны? Потому что выявленные по IP - не факт, что клоны, скорее наоборот, и их иногда бывает довольно много, минипрофиль может распухнуть.

Ссылка на профиль клона нужна или просто текст?
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 15 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Re: Double Account Preventer

Сообщение Booker »

- Clone - это просто условное обозначение, что это клон. На том ресурсе выводится не только имя клона, а ещё и другие вещи, потому это просто что-то вроде подзаголовка, поясняющего, что ниже будут именно имена клона. Это не нужно.

- Лучше конечно по куки, ай-пи не надёжны.

- Лучше ссылку на профиль, но если это проблематично, то хотя бы просто текст.
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Double Account Preventer

Сообщение Shredder »

viewtopic.php
Найти:

Код: Выделить всё

		$bbcode_bitfield = $bbcode_bitfield | base64_decode($row['user_sig_bbcode_bitfield']);
	}
Добавить после:

Код: Выделить всё

	if (!empty($row['c_common_names']))
	{
		$c_item = explode('|', $row['c_common_names']);
		$c_item[0] = (isset($c_item[0])) ? $c_item[0] : '';
		$c_item[1] = (isset($c_item[1])) ? base64_decode($c_item[1]) : '';

		$user_clone = (!empty($c_item[0]) && $auth->acl_get('u_viewprofile')) ? '<a href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $c_item[0], true) . '">' . $c_item[1]  . '</a>' : $c_item[1];
	}
	else
	{
		$user_clone = '';
	}
Найти:

Код: Выделить всё

				'from'			=> '',
Добавить после:

Код: Выделить всё

				'clone'			=> '',
Найти:

Код: Выделить всё

				'from'			=> (!empty($row['user_from'])) ? $row['user_from'] : '',
Добавить после:

Код: Выделить всё

				'clone'			=> $user_clone,
Найти:

Код: Выделить всё

		'POSTER_ID'			=> $poster_id,
Добавить после:

Код: Выделить всё

		'POSTER_CLONE'			=> ($auth->acl_get('a_') || $auth->acl_get('m_', $forum_id)) ? $user_cache[$poster_id]['clone'] : '',
На примере стиля prosilver:

Шаблон viewtopic_body.html:
Найти:

Код: Выделить всё

				<!-- IF not postrow.U_POST_AUTHOR --><strong>{postrow.POST_AUTHOR_FULL}</strong><!-- ELSE -->{postrow.POST_AUTHOR_FULL}<!-- ENDIF -->
Добавить после:

Код: Выделить всё

				<!-- IF postrow.POSTER_CLONE --><br /><strong style="text-decoration: line-through;">{postrow.POSTER_CLONE}</strong><!-- ENDIF -->
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 15 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Re: Double Account Preventer

Сообщение Booker »

Благодарю, отлично работает.
Есть некоторый глюк, не пойму, это сюда или в другую тему. Я так понял, что основным ником считается тот, который зареган раньше, позже зареганые считаются клонами. Так вот вижу, что под ником одного из юзеров высвечивает аккаунт, который действительно зареган раньше, но который уже давно удалён (и при нажатии на него так и показывает, что пользователя не существует). Синхронизация сообщений не помогает. Как это убрать и откуда вообще взялись следы этого удалённого аккаунта?
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Double Account Preventer

Сообщение Shredder »

Booker писал(а):Я так понял, что основным ником считается тот, который зареган раньше, позже зареганые считаются клонами.
Да. Так же, как и в основном моде.
Booker писал(а):Так вот вижу, что под ником одного из юзеров высвечивает аккаунт, который действительно зареган раньше, но который уже давно удалён (и при нажатии на него так и показывает, что пользователя не существует). Синхронизация сообщений не помогает. Как это убрать и откуда вообще взялись следы этого удалённого аккаунта?
Когда бывает удалён клон, то в данных основного пользователя информация о нём сохраняется.
Можно ввести дополнительную проверку в виде SQL-запроса, чтобы удалённый аккаунт отображался простым текстом, а не ссылкой, как это сделано в основном моде (как вариант - чтобы удалённый клон вообще не отображался):

строчку

Код: Выделить всё

		$user_clone = (!empty($c_item[0]) && $auth->acl_get('u_viewprofile')) ? '<a href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $c_item[0], true) . '">' . $c_item[1]  . '</a>' : $c_item[1];
в первой правке предыдущего кода заменить на:

Код: Выделить всё

		if (!empty($c_item[0]))
		{
			$c_sql = 'SELECT user_id
				FROM ' . USERS_TABLE . '
				WHERE user_id = ' . (int) $c_item[0];
			$c_result = $db->sql_query($c_sql);
			$c_id = $db->sql_fetchfield('user_id');
			$db->sql_freeresult($c_result);
		}

		$user_clone = (isset($c_id) && $c_id && !empty($c_item[0]) && $auth->acl_get('u_viewprofile')) ? '<a href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $c_item[0], true) . '">' . $c_item[1]  . '</a>' : $c_item[1];
Если нужно, чтобы вообще не отображался, то часть $c_item[1] в самом конце заменить на ''

Либо сделать где-то "кнопку" на стирание информации о клоне из данных пользователя.
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 15 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Re: Double Account Preventer

Сообщение Booker »

Запрос будет посылаться всякий раз, когда открывается пост такого пользователя с удалённым вторым аккаунтом? Если да, то не даст ли это большую нагрузку?
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Double Account Preventer

Сообщение Shredder »

Booker писал(а):Если да, то не даст ли это большую нагрузку?
Здесь однозначно ответить не получится. Лучший способ - установить и проверить. Если что-то будет не так, то всегда можно переключиться на другой вариант. А то помню, что делал человеку один мод, и написал ему, что мод будет давать нагрузку, а оказалось, что всё в порядке - он потом писал, что ничего подобного не заметно.
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 15 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Re: Double Account Preventer

Сообщение Booker »

Понял. Благодарю, по нагрузке отпишусь позднее, возможно кому-то это поможет.
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 15 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Re: Double Account Preventer

Сообщение Booker »

Ещё вопрос. Можно ли отключить такой показ клонов, созданных одним конкретным юзером? В смысле чтобы для модераторов не отображались под ником клоны, созданные админами.
В основном моде отключается вроде только показ подозрительных входов.
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Double Account Preventer

Сообщение Shredder »

Можно перечислить id пользователей, для которых не нужно отображать информацию под ником:
$poster_id != id_админа_#1 && $poster_id != id_админа_#2 и т.д. На примере пользователей с id 2 и 3:

Код: Выделить всё

		'POSTER_CLONE'			=> ($poster_id != 2 && $poster_id != 3 && ($auth->acl_get('a_') || $auth->acl_get('m_', $forum_id))) ? $user_cache[$poster_id]['clone'] : '',
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 15 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Re: Double Account Preventer

Сообщение Booker »

Отписываюсь по нагрузке.
За неделю после установки ничего необычного не замечено - уровень нагрузки примерно на том же уровне, что и до этого.
Shredder писал(а): Либо сделать где-то "кнопку" на стирание информации о клоне из данных пользователя.
Хотя наверное это таки лучший вариант. :roll:
drugold
phpBB 1.4.2
Сообщения: 72
Стаж: 16 лет 2 месяца
Откуда: СССР
Благодарил (а): 6 раз
Поблагодарили: 8 раз

Re: Double Account Preventer

Сообщение drugold »

Версия мода 1.0.12. В Логе ошибок после установки (некоторые пользователи жалуются на невозможность залогиниться):

Код: Выделить всё

Произошла общая ошибка: 
» SQL ERROR [ mysqli ]

Table '3do_phpbb.phpbb_dap_log_excludes' doesn't exist [1146]

An sql error occurred while fetching this page. Please contact an administrator if this problem persists.

BACKTRACE

FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()

FILE: [ROOT]/includes/db/dbal.php
LINE: 757
CALL: trigger_error()

FILE: [ROOT]/includes/db/mysqli.php
LINE: 189
CALL: dbal->sql_error()

FILE: [ROOT]/includes/functions_dap.php
LINE: 140
CALL: dbal_mysqli->sql_query()

FILE: [ROOT]/includes/session.php
LINE: 1217
CALL: dap->cookie_tracking()

FILE: [ROOT]/includes/session.php
LINE: 689
CALL: session->check_ban()

FILE: [ROOT]/includes/session.php
LINE: 508
CALL: session->session_create()

FILE: [ROOT]/viewtopic.php
LINE: 25
CALL: session->session_begin()
При этом установщик сообщает, что установка прошла успешно:
Скрытый текст

Код: Выделить всё

Double Account Preventer - Успешно

Тип базы данных :: mysqli

Новые версии мода и поддержку вы можете найти на странице мода на сайте автора.
Успешно

Добавление новой переменной конфигурации: dap_ip_check
Успешно

Добавление новой переменной конфигурации: dap_cookie_check
Успешно

Добавление новой переменной конфигурации: dap_post_forum_id
Успешно

Добавление новой переменной конфигурации: dap_email_notification
Успешно

Добавление новой переменной конфигурации: dap_pm_notification
Успешно

Добавление новой переменной конфигурации: dap_post_notification
Успешно

Добавление новой переменной конфигурации: dap_alert_user_id
Успешно

Добавление новой переменной конфигурации: dap_cookie_ban
Успешно

Добавление новой переменной конфигурации: dap_cookie_autoban
Успешно

Добавление новой переменной конфигурации: dap_cookie_ban_message
Успешно

Добавление новой переменной конфигурации: dap_cookie_reg_deny
Успешно

Добавление новой переменной конфигурации: dap_reg_deny_message
Успешно

Добавление новой переменной конфигурации: dap_users_per_page
Успешно

Добавление нового поля user_double в таблицу phpbb_users
Успешно

Добавление нового поля user_banned_cookie в таблицу phpbb_users
Успешно

Добавление нового поля ip_common_names в таблицу phpbb_users
Успешно

Добавление нового поля c_common_names в таблицу phpbb_users
Успешно

Добавление acp модуля: Double Account Preventer
Успешно

Добавление acp модуля: Настройки Double Account Preventer
Успешно

Добавление acp модуля: Список возможных клонов
Успешно

Добавление acp модуля: Лог подозрительных входов
Успешно

Добавление acp модуля: Бан по Cookie
Успешно

Добавление новой переменной конфигурации: dap_log_excluded
Успешно

Удаление переменной конфигурации: dap_log_excluded
Успешно

Добавление новой таблицы: phpbb_dap_log_excludes
Успешно

Неизвестно
Успешно

Добавление новой переменной конфигурации: dap_ignore_inactive
Успешно

Добавление новой переменной конфигурации: dap_quick_deletion
Успешно

Добавлено новое право доступа: a_cleardupe
Успешно

Добавление новой переменной конфигурации: dap_user_notes_entry
Успешно

Неизвестно
Успешно

Удаление переменной конфигурации: dap_post_notification
Успешно

Очистка кеша конференции
Успешно

Добавление новой переменной конфигурации: dap_version
Успешно
VDS: OpenVZ [Intel(R) Xeon(R) CPU E5645 @ 2.40GHz 1596.000 Mhz X 4 / 4096 MB / 120 GB]
HTTPd: Apache/2.2.22 (Debian)
PHP: 5.4.4-14+deb7u12
MySQL(i): 5.5.33-0+wheezy1
---
Основной: phpBB 3.0.14
Тестовый: phpBB 3.1.8
Аватара пользователя
AnteFil
phpBB 1.4.4
Сообщения: 106
Стаж: 12 лет 2 месяца
Благодарил (а): 7 раз
Поблагодарили: 1 раз

Ошибка при регистрации

Сообщение AnteFil »

Поставил модуль http://www.phpbbguru.net/community/topic35024.html для защиты от мультиводства теперь при регистрации вываливается ошибка

Duplicate entry 'указанное имя при регистрации' for key 'username_clean' [1062]

Что может быть и как исправить?
Аватара пользователя
AnteFil
phpBB 1.4.4
Сообщения: 106
Стаж: 12 лет 2 месяца
Благодарил (а): 7 раз
Поблагодарили: 1 раз

Re: Double Account Preventer

Сообщение AnteFil »

При регистрации выдаёт ошибку

Код: Выделить всё

SQL ERROR [ mysqli ] Duplicate entry 'sergi555' for key 'username_clean' [1062]
Последний раз редактировалось Sheer 07.12.2014 11:02, всего редактировалось 1 раз.
Причина: bb-код
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Double Account Preventer

Сообщение Shredder »

AnteFil
При установке ты добавил кусок кода для includes/ucp/ucp_register.php вместо замены, которая положена по инструкции. Я прав?

Вернуться в «Бета-версии модов для phpBB 3.0.x»