Внимание!
Не все расширения для phpBB 3.2 совместимы с phpBB 3.3, главным образом из-за неверного синтаксиса в определениях сервисов (отсутствия обрамляющих кавычек - '...').
Перед обновлением необходимо убедиться в совместимости всех расширений.
Рекомендуется предварительно тестировать обновление на копии конференции (локально или на сервере).

Detector Bots

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Аватара пользователя
lex
phpBB 1.2.1
Сообщения: 24
Стаж: 15 лет 2 месяца

Сообщение lex »

natali писал(а):а блокнотик всё пишет и пишет сцуко )))))
А вы раскоментировали блок, чтоб все ссылки обнаружавались?
Видео плеер FSP - Каталог софта - Рейтинг сайтов
Mail.ru Agent - общаемся, отправка бесплатных sms.

Аватара пользователя
natali
phpBB 2.0.1
Сообщения: 293
Стаж: 15 лет 2 месяца
Откуда: Киев

Сообщение natali »

ненене на форум оно не попадает )))

мод отличный, всё рубится и режется... просто блокнотик всё пишет и пишет... сосёт и пишет... ))))

рупоиск ещё появился....


за мод -
СПАСИБО!!!

Stern
phpBB 2.0.3
Сообщения: 368
Стаж: 15 лет 3 месяца

Сообщение Stern »

natali
Искал, честно, но без надежды :) Спасибо.

НО! Мод Block guest's links не доработан - у автора [R: R@m$e$ :U] нет времени...
Так что либо ждать придется, либо... кто-нибудь еще сделает подобное? :)

Аватара пользователя
lex
phpBB 1.2.1
Сообщения: 24
Стаж: 15 лет 2 месяца

Сообщение lex »

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

добавте перед строчкой

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

$bot_link_count = 0;

Такой код:

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

if ($userdata['user_id'] == ANONYMOUS ) $bot_max_link=0;
Добавлено спустя 3 минуты 6 секунд:

Но только сообщение выведится как для рекламного бота.
Потом доработаю
Видео плеер FSP - Каталог софта - Рейтинг сайтов
Mail.ru Agent - общаемся, отправка бесплатных sms.

Stern
phpBB 2.0.3
Сообщения: 368
Стаж: 15 лет 3 месяца

Сообщение Stern »

Надо для ЗАРЕГИСТРИРОВАННОГО пользователя. Чтобы после регистрации и только после оставления нескольких постов ему разрешалось закинуть ссылку. (гости вообще запрещено постить)
Жду с нетерпением доработки!

Ivantor

Сообщение Ivantor »

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

А? подскажите код человеку-непрограммисту :)

Аватара пользователя
lex
phpBB 1.2.1
Сообщения: 24
Стаж: 15 лет 2 месяца

Сообщение lex »

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

А? подскажите код человеку-непрограммисту
Читай предыдущий мой пост:)
Видео плеер FSP - Каталог софта - Рейтинг сайтов
Mail.ru Agent - общаемся, отправка бесплатных sms.

Аватара пользователя
natali
phpBB 2.0.1
Сообщения: 293
Стаж: 15 лет 2 месяца
Откуда: Киев

Сообщение natali »

lex, отлично. только я себе сделал не 0 а 1. ))

а зарегеным дал 21 ))

Аватара пользователя
edgar
phpBB 2.0.13
Сообщения: 917
Стаж: 15 лет
Откуда: с Луны свалил...

Сообщение edgar »

lex писал(а):Но только сообщение выведится как для рекламного бота.
Потом доработаю
А это не страшно, даже имхо дарабатывать необязательно. Я у себя сделал, что выводится сообщение вроде (точно щас не помню) "На этом форуме есть ограничения по размещению ссылок. Сообщение не отправлено". Мне кажется lex'у не надо делать лишнюю работу, чтобы выводились разные сообщения. Какждый может придумать для своего форума сообщение, которое ему больше всего подойдет.

Еще раз спасибо за мод! Но чего-то я уже насладился сообщениями о попытках ботов оставить рекламу. Обычно 1-2 в день, а вчера вдруг сразу 10 попыток было. В честь праздника наверно :) Так что решил отключить уведомление.

Аватара пользователя
lex
phpBB 1.2.1
Сообщения: 24
Стаж: 15 лет 2 месяца

Сообщение lex »

edgar писал(а):А что делает эта строчка?

Код:
$bot_link_count = 1;
А такой строчки нет:)

есть:

$bot_link_count = 0;

Просто инициализация переменной
Видео плеер FSP - Каталог софта - Рейтинг сайтов
Mail.ru Agent - общаемся, отправка бесплатных sms.

Аватара пользователя
edgar
phpBB 2.0.13
Сообщения: 917
Стаж: 15 лет
Откуда: с Луны свалил...

Сообщение edgar »

lex писал(а):А такой строчки нет
Странно, а у меня почему то единица стоит. :shock: Не помню, почему так поставил

Аватара пользователя
Бродяга
phpBB 1.4.3
Сообщения: 79
Стаж: 14 лет 6 месяцев
Откуда: Минск

Сообщение Бродяга »

Stern писал(а):Надо для ЗАРЕГИСТРИРОВАННОГО пользователя. Чтобы после регистрации и только после оставления нескольких постов ему разрешалось закинуть ссылку. (гости вообще запрещено постить)
Жду с нетерпением доработки!
Доработано :wink:
Предлагаю расширенный вариант мода Detector Bots
Отличия:
* Если юзер (читай, робот) постит спам в первом же сообщении - удаляет также юзера;
* Корректно обрабатывает сцепленные посты
* "Проверенного" юзера не убивает, но штрафует (если установлен мод Yellow Card)

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

# OPEN
includes\functions_post.php

# FIND
# именно в функцию prepare_message(), а не submit_post() - иначе
# не будут обрабатываться прицепляемые мессаги, а только новые
	if($bbcode_on && $bbcode_uid != '')
	{
		$message = bbencode_first_pass($message, $bbcode_uid);
	}

# AFTER ADD

/* ---8<--------[Detector Bots]----------------------------------------- */
	global $unhtml_specialchars_match, $unhtml_specialchars_replace,$client_ip,$user_ip,$db,$userdata,$phpbb_root_path,$phpEx;
	$first_post_max_link = 1; // позволено линков Гостю и Юзеру в самом первом посте, все слепленные считаются одним постом
	$newbie_max_link = 10; // позволено линков новичку, написавшему более 1 поста
	$oldbie_minposts = 16; // старичком считаем юзера, написавшего хотя бы 16 постов
	$oldbie_max_link = 15; // позволено линков старичку
	$use_yellowcard = true; // штрафовать юзера. Если MOD YellowCard не установлен, поставить FALSE
	$send_email_to_admin = true; // отправлять уведомление админу
	$link_count = 0;

	preg_match_all('/\[url(.*?)\[\/url\]/i',$message, $links);
	if (isset($links[1])) {$link_count += count($links[1]); }
/* ---8<-----[ BEG раскомментируйте эту часть, если хотите находить ссылки любого вида]----------- */
	preg_match_all("#(^|[\n ])([\w]+?://[^ "\n\r\t<]*)#is", $message, $links);
	if (isset($links[1])) {$link_count += count($links[1]); }
	preg_match_all("#(^|[\n ])((www|ftp)\.[^ "\t\n\r<]*)#is", $message, $links);
	if (isset($links[1])) {$link_count += count($links[1]); }
/* ---8<-----[ END раскомментируйте эту часть, если хотите находить ссылки любого вида]----------- */

	if ($userdata['user_level'] == ADMIN && $userdata['session_logged_in']) {$link_count=0;} // не надо банить админа

	if ($userdata['user_level'] == ANONYMOUS)
	{
		if ($link_count > $first_post_max_link)
		{
			if ($send_email_to_admin)
			{
				include($phpbb_root_path . 'includes/emailer.'.$phpEx);
				$emailer = new emailer($board_config['smtp_delivery']);
				$emailer->from($board_config['board_email']);
				$emailer->replyto($board_config['board_email']);
				$emailer->use_template('detector_bot', $board_config['default_lang']);
				$emailer->email_address($board_config['board_email']);
				$emailer->set_subject('Попытка размещения рекламы');
				$emailer->assign_vars(array(
					'SITENAME' => $board_config['sitename'],
					'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '',
					'IP' => $client_ip,
					'POSTS' => '',
					'LINKS' => $link_count,
					'RESULT' => 'Сообщение не отправлено.',
					'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $userdata['username']), 0, 25)),
					'MESSAGE' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $post_message), 0, 1000)),
					'SUB' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'",  $post_subject), 0, 100))));
				$emailer->send();
				$emailer->reset();
			}
			message_die(GENERAL_MESSAGE, 'Зафиксирована попытка размещения рекламного сообщения. Для того, чтобы иметь возможность размещать ссылки необходимо <a href="profile.php?mode=register">зарегистрироваться</a>.');
		}
	}
	elseif ($userdata['user_posts'] < 2 && $link_count > $first_post_max_link) // Самый первый пост. А <2 потому что если склеиваем, пост будет все равно первый, но число постов уже 1
	{
		// киляем и пост и юзера! без предупреждения...
		$sql = "DELETE FROM " . SESSIONS_TABLE . " WHERE session_ip ='$user_ip'"; 
		if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'SQL Quering error', '', __LINE__, __FILE__, $sql); }
		
		$sql = "SELECT group_id FROM " . USER_GROUP_TABLE . " WHERE user_id = ".$userdata['user_id'];
		if ($row = $db->sql_fetchrow($db->sql_query($sql)))
		{
			$sql = "DELETE FROM " . GROUPS_TABLE . " WHERE group_id = ".$row['group_id'];
			if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'SQL Quering error', '', __LINE__, __FILE__, $sql); }
		}
		
		$sql = "DELETE FROM " . USER_GROUP_TABLE . " WHERE user_id = ".$userdata['user_id'];
		if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'SQL Quering error', '', __LINE__, __FILE__, $sql); }

		$sql = "DELETE FROM " . USERS_TABLE . " WHERE user_id = ".$userdata['user_id'];
		if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'SQL Quering error', '', __LINE__, __FILE__, $sql); }
		
		// грамотно чистим форум (корректно обрабатываются склеенные сообщения)
		if (isset($GLOBALS['topic_id'])) // продолжаем топик ? убить пост, оставить топик : прервать отправку
		{
			$sql = "SELECT Count(*) AS posts_in_topic, poster_id, topic_id FROM ".POSTS_TABLE." GROUP BY topic_id, poster_id HAVING topic_id = ".$GLOBALS['topic_id']." AND poster_id <> ".$userdata['user_id'];
			if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'SQL Quering error', '', __LINE__, __FILE__, $sql); }
//			$sql = "DELETE p.* FROM ".POSTS_TABLE." p LEFT JOIN ".USERS_TABLE." u ON p.poster_id = u.user_id WHERE (u.user_id Is Null)";
//			if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Cannot delete posts', '', __LINE__, __FILE__, $sql); }
			$sql = "SELECT p.* FROM ".POSTS_TABLE." p LEFT JOIN ".USERS_TABLE." u ON p.poster_id = u.user_id WHERE (u.user_id Is Null)";
			if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Cannot select posts', '', __LINE__, __FILE__, $sql); }
			while ($row = $db->sql_fetchrow($result)) {
				$sql = "DELETE FROM ".POSTS_TABLE." WHERE post_id = ".$row['post_id'];
				if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Cannot delete posts', '', __LINE__, __FILE__, $sql); }
			}

//			$sql = "DELETE pt.* FROM ".POSTS_TEXT_TABLE." pt LEFT JOIN ".POSTS_TABLE." p ON p.post_id = pt.post_id WHERE (p.post_id Is Null)";
//			if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Cannot delete post texts', '', __LINE__, __FILE__, $sql); }
			$sql = "SELECT pt.* FROM ".POSTS_TEXT_TABLE." pt LEFT JOIN ".POSTS_TABLE." p ON p.post_id = pt.post_id WHERE (p.post_id Is Null)";
			if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Cannot select post', '', __LINE__, __FILE__, $sql); }
			while ($row = $db->sql_fetchrow($result)) {
				$sql = "DELETE FROM ".POSTS_TEXT_TABLE." WHERE post_id = ".$row['post_id'];
				if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Cannot delete post text', '', __LINE__, __FILE__, $sql); }
			}

			// обновляем статистику по топику и форумам (иначе глюк: пропадает тема, хоть и не удаляется)
			$sql = "SELECT MIN(post_id) AS first_post, MAX(post_id) AS last_post FROM ".POSTS_TABLE." WHERE topic_id = ".$GLOBALS['topic_id'];
			if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not get post ID', '', __LINE__, __FILE__, $sql);	}
			if ($row = $db->sql_fetchrow($result))
			{
				$first_post = ( $row['first_post'] ) ? $row['first_post'] : 0;
				$last_post = ( $row['last_post'] ) ? $row['last_post'] : 0;
			}
			else
			{
				$first_post = $last_post = 0;
			}
			$sql = "UPDATE ".TOPICS_TABLE." SET topic_first_post_id = $first_post, topic_last_post_id = $last_post WHERE topic_id = ".$GLOBALS['topic_id'];
			if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not update forum', '', __LINE__, __FILE__, $sql); }
			
			$sql = "SELECT MAX(post_id) AS last_post, COUNT(post_id) AS total FROM ".POSTS_TABLE." WHERE forum_id = ".$GLOBALS['forum_id'];
			if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not get post ID', '', __LINE__, __FILE__, $sql);	}
			if ($row = $db->sql_fetchrow($result))
			{
				$last_post = ( $row['last_post'] ) ? $row['last_post'] : 0;
				$total_posts = ($row['total']) ? $row['total'] : 0;
			}
			else
			{
				$last_post = $total_posts = 0;
			}

			$sql = "SELECT COUNT(topic_id) AS total FROM ".TOPICS_TABLE." WHERE forum_id = ".$GLOBALS['forum_id'];
			if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not get topic count', '', __LINE__, __FILE__, $sql); }

			$total_topics = ( $row = $db->sql_fetchrow($result) ) ? ( ( $row['total'] ) ? $row['total'] : 0 ) : 0;

			$sql = "UPDATE ".FORUMS_TABLE." SET forum_last_post_id = $last_post, forum_posts = $total_posts, forum_topics = $total_topics WHERE forum_id = ".$GLOBALS['forum_id'];
			if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not update forum', '', __LINE__, __FILE__, $sql); }
		}

		if ($send_email_to_admin)
		{
			include($phpbb_root_path . 'includes/emailer.'.$phpEx);
			$emailer = new emailer($board_config['smtp_delivery']);
			$emailer->from($board_config['board_email']);
			$emailer->replyto($board_config['board_email']);
			$emailer->use_template('detector_bot', $board_config['default_lang']);
			$emailer->email_address($board_config['board_email']);
			$emailer->set_subject('Попытка размещения рекламы');
			$emailer->assign_vars(array(
				'SITENAME' => $board_config['sitename'],
				'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '',
				'IP' => $client_ip,
				'POSTS' => $userdata['user_posts'],
				'LINKS' => $link_count,
				'RESULT' => 'Сообщение удалено, Пользователь удален.',
				'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $userdata['username']), 0, 25)),
				'MESSAGE' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $post_message), 0, 1000)),
				'SUB' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'",  $post_subject), 0, 100))));
			$emailer->send();
			$emailer->reset();
		}
		message_die(GENERAL_MESSAGE, 'Зафиксирована попытка размещения рекламного сообщения.<br>Пользователь <b>'.$userdata['username'].'</b> удален. Если Вы считаете, что это - ошибка, внимательно читайте условия регистрации.');
	}
	elseif (($userdata['user_posts'] < $oldbie_minposts && $link_count > $newbie_max_link) || ($link_count > $oldbie_max_link))
	{
		// пост оставляем, но юзера штрафуем
		if ($use_yellowcard)
		{
			$sql = "SELECT user_warnings FROM " . USERS_TABLE . " WHERE user_id = ".$userdata['user_id'];
			if ($row = $db->sql_fetchrow($db->sql_query($sql)))
			{
				$sql = "UPDATE " . USERS_TABLE .  " SET user_warnings = ".(intval($row['user_warnings'])+1)." WHERE user_id = ".$userdata['user_id'];
				if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'SQL Quering error', '', __LINE__, __FILE__, $sql); }
			}
			else
			{
				message_die(GENERAL_ERROR, 'SQL Quering error', '', __LINE__, __FILE__, $sql);
			}
		}
		
		if ($send_email_to_admin)
		{
			include($phpbb_root_path . 'includes/emailer.'.$phpEx);
			$emailer = new emailer($board_config['smtp_delivery']);
			$emailer->from($board_config['board_email']);
			$emailer->replyto($board_config['board_email']);
			$emailer->use_template('detector_bot', $board_config['default_lang']);
			$emailer->email_address($board_config['board_email']);
			$emailer->set_subject('Попытка размещения рекламы');
			$emailer->assign_vars(array(
				'SITENAME' => $board_config['sitename'],
				'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '',
				'IP' => $client_ip,
				'POSTS' => $userdata['user_posts'],
				'LINKS' => $link_count,
				'RESULT' => 'Сообщение не отправлено'.($use_yellowcard ? ', Пользователь оштрафован: сейчас '.(intval($row['user_warnings'])+1).' из '.$board_config['max_user_bancard']:''),
				'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $userdata['username']), 0, 25)),
				'MESSAGE' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $post_message), 0, 1000)),
				'SUB' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'",  $post_subject), 0, 100))));
			$emailer->send();
			$emailer->reset();
		}
		message_die(GENERAL_MESSAGE, 'Зафиксирована попытка размещения рекламного сообщения.<br>Сообщение не отправлено'.($use_yellowcard ? ', пользователь <b>'.$userdata['username'].'</b> оштрафован.':'.').' Если Вы считаете, что это - ошибка, внимательно читайте условия регистрации.');
	}
/* ---8<--------[Detector Bots]----------------------------------------- */

# CREATE FILE
language\lang_russian\email\detector_bot.tpl

# WITH THIS TEXT
Subject: Попытка размещения рекламы на {SITENAME} 
Charset: windows-1251 

На {SITENAME} была зафиксирована попытка размещения рекламы со следующими регистрационными данными: 

IP: {IP} 
Username: {USERNAME} 
Total posts before: {POSTS}

Тема: {SUB} 
Total links: {LINKS}

Message:
- - -8<- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{MESSAGE} 
- - -8<- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Result: {RESULT}

{EMAIL_SIG} 

# SAVE / CLOSE ALL FILES
Думал, в сказку попал??? Нее... ты в жизнь вляпался!
Авторские проекты: www.tuning.by | www.blume.by

Stern
phpBB 2.0.3
Сообщения: 368
Стаж: 15 лет 3 месяца

Сообщение Stern »

Объясните мне, что здесь надо удалить? Вроде и так все расскомментировано...
/* ---8<-----[ BEG раскомментируйте эту часть, если хотите находить ссылки любого вида]----------- */
preg_match_all("#(^|[\n ])([\w]+?://[^ \"\n\r\t<]*)#is", $message, $links);
if (isset($links[1])) {$link_count += count($links[1]); }
preg_match_all("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)#is", $message, $links);
if (isset($links[1])) {$link_count += count($links[1]); }
/* ---8<-----[ END раскомментируйте эту часть, если хотите находить ссылки любого вида]----------- */
Добавлено спустя 48 минут 51 секунду:

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

SQL Quering error

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND poster_id <> 30' at line 1

SELECT Count(*) AS posts_in_topic, poster_id, topic_id FROM phpbb_posts GROUP BY topic_id, poster_id HAVING topic_id = AND poster_id <> 30

Line : 184
File : functions_post.php

Добавлено спустя 4 минуты 28 секунд:

А пользователь был удален. Значит, мод работает, но что-то где-то не так...

Может из-за того, что я подставил вот сюда свои значения?
$first_post_max_link = 0;
$newbie_max_link = 1

Протестировал еще раз и выяснилось, что эта ошибка возникает только тогда, когда новый юзер пытается в ПЕРВОМ же посте разместить ссылку(и). Он тут же удаляется, правда с этой ошибкой.

строка 184 содержит вот это:
if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'SQL Quering error', '', __LINE__, __FILE__, $sql); }

Но, если юзер в первом сообщении никаких ссылок не давал, то при попытке разместить рекламу в СЛЕДУЮЩИХ постах МОД четко отсекал эти попытки и сообщал об этом на экране "Зафиксирована попытка размещения рекламного сообщения...". Юзер, конечно же, при этом не удалялся.
Жду с нетерпением исправления ошибки!!! А мод просто замечательный!

Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 15 лет 2 месяца
Откуда: Оренбург (Южный Урал)
Благодарил (а): 24 раза
Поблагодарили: 54 раза

Сообщение Поручик »

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

HAVING topic_id = AND poster_id <> 30 
Идентификатор темы topic_id почему-то пустой.

---
Кстати о птичках. Бродяга, а как бы этот мод оформить по правилам оформления модов и программирования phpBB.
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции

наш форум http://forum.aeroion.ru/cat1.html

Аватара пользователя
edgar
phpBB 2.0.13
Сообщения: 917
Стаж: 15 лет
Откуда: с Луны свалил...

Сообщение edgar »

Поручик писал(а):Кстати о птичках. Бродяга, а как бы этот мод оформить по правилам оформления модов и программирования phpBB.
и назвать по другому желательно. Или аддоны сделать. То есть имхо совсем не надо смешивать эти моды.

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