Привет друзья, долго мучался с форумом (так как считаю что форум все таки нужен в игре!) но надоело то, что постоянно регистрируются боты с своей рекламой. Поэтому решил сделать так:
Форум поставлен в БД в отдельную таблицу (затер чтобы не рекламировать свой адрес)
Думаю тут все понятно. Беремся за написание кода.
Итак, ищем файл class.ShowBoardPage.php в "includes/pages/game"
смело, решительно удаляем все оттуда! и вставляем следующий код:
Display All
Ну вот собственно и все)))
ВНИМИНИЕ!!! В данном моде есть одна проблема!
Долго расписывать в чем дело, но суть такова, если у игрока ник состоит из двух слов, например "Люблю маму", то с такой формой регистрации он не сможет авторизоваться!
На просторах интернета нашел таки ответ как это можно поправить, в корне форума создаем файл php с нужным вам названием у меня к примеру userclean.php и вставляем в него следующее
Display All
и при наличии проблемы с входом у игроков просто переходим по адресу FORUMURL/userclean.php
- Устанавливаю форум.
- Закрываю в нем регистрацию.
- Пишу мод для автоматической регистрации пользователей из игры при переходе на форум.
- ???
- PROFIT!!!))
Форум поставлен в БД в отдельную таблицу (затер чтобы не рекламировать свой адрес)
Думаю тут все понятно. Беремся за написание кода.
Итак, ищем файл class.ShowBoardPage.php в "includes/pages/game"
смело, решительно удаляем все оттуда! и вставляем следующий код:
PHP Source Code
- <?php
- class ShowBoardPage extends AbstractPage
- {
- public static $requireModule = 0;
- function __construct()
- {
- parent::__construct();
- }
- function show()
- {
- global $CONF,$LNG,$USER;
- $mail = $GLOBALS['DATABASE']->countquery("SELECT `username` FROM `forum`.`phpbb_users` WHERE `user_email` = '".$USER['email']."';");
- if($mail !="")
- {
- //если мыло такое уже зарегано, то редиректим на форум
- $forum = $CONF['forum_url'];
- }else{
- // если такого мыла нет, то регистрируем юзера
- $rand_seed = '8a414598ba18a512b8fe97f1497fa22b';
- $val = $rand_seed . microtime();
- $val = md5($val);
- $salt= substr($val, 4, 16);
- $text = preg_replace('#(?:[\x00-\x1F\x7F]+|(?:\xC2[\x80-\x9F])+)#', '', $USER['username']);
- $text = preg_replace('# {2,}#', ' ', $USER['username']);
- $name_clean= mb_strtolower($text);
- $name_clean= trim($name_clean);
- // если же подобного мыла нет, то создаем нового и опять таки редиректим на форум
- $hemail = crc32(strtolower($USER['email']) . strlen($USER['email']));
- $GLOBALS['DATABASE']->query("INSERT INTO `forum`.`phpbb_users` SET
- user_id = '".$USER['id']."',
- username = '".$USER['username']."',
- username_clean ='".$name_clean."',
- user_email ='".$USER['email']."',
- user_email_hash ='".$hemail."',
- user_password ='".$USER['password']."',
- user_regdate ='".TIMESTAMP."',
- user_form_salt ='".$salt."',
- user_permissions ='',
- user_sig ='',
- group_id ='2',
- user_ip ='".$USER['ip_at_reg']."';");
- $GLOBALS['DATABASE']->query("insert into `forum`.`phpbb_user_group`
- (`user_id`, `user_pending`, `group_id`)
- values (".$USER['id'].", 0, 2)");
- $GLOBALS['DATABASE']->query("update `forum`.`phpbb_config` set `config_value`=`config_value`+1 where `config_name`='num_users'");
- $GLOBALS['DATABASE']->query("update `forum`.`phpbb_config` set `config_value`= ".$USER['id']." where `config_name`='newest_user_id'");
- $GLOBALS['DATABASE']->query("update `forum`.`phpbb_config` set `config_value`= '".$USER['username']."' where `config_name`='newest_username'");
- $forum = $CONF['forum_url'];}
- if(filter_var($CONF['forum_url'], FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED)) {
- HTTP::sendHeader('Location', $forum );
- } else {
- $this->printMessage($LNG['bad_forum_url']);
- }
- }
- }
- ?>
ВНИМИНИЕ!!! В данном моде есть одна проблема!
Долго расписывать в чем дело, но суть такова, если у игрока ник состоит из двух слов, например "Люблю маму", то с такой формой регистрации он не сможет авторизоваться!
На просторах интернета нашел таки ответ как это можно поправить, в корне форума создаем файл php с нужным вам названием у меня к примеру userclean.php и вставляем в него следующее
PHP Source Code
- <?php
- /**
- *
- ФАЙЛ ДЛЯ РЕНЕЙМА, ЧТОБЫ НЕ ГЛЮЧИЛИ ИМЕНА НА РУССКОМ
- *
- */
- /**
- * @ignore
- */
- define('IN_PHPBB', true);
- $phpbb_root_path = './';
- $phpEx = substr(strrchr(__FILE__, '.'), 1);
- include($phpbb_root_path . 'common.' . $phpEx);
- // Start session management
- $user->session_begin();
- $auth->acl($user->data);
- $user->setup();
- // Did user forget to login? Give 'em a chance to here ...
- if ($user->data['user_id'] == ANONYMOUS)
- {
- login_box('', $user->lang['LOGIN_ADMIN'], $user->lang['LOGIN_ADMIN_SUCCESS'], false);
- }
- // Is user any type of admin? No, then stop here, each script needs to
- // check specific permissions but this is a catchall
- if (!$auth->acl_get('a_'))
- {
- trigger_error('NO_ADMIN');
- }
- $users = array();
- $sql = 'SELECT user_id, username FROM ' . USERS_TABLE;
- $result = $db->sql_query($sql);
- // Get options values for each user
- while ($row = $db->sql_fetchrow($result))
- {
- $users[$row['user_id']] = $row['username'];
- }
- $db->sql_freeresult($result);
- foreach ($users as $key => $value)
- {
- $username_clean = $db->sql_escape(utf8_clean_string($value));
- // echo $username_clean . '<br />';
- $sql = 'UPDATE ' . USERS_TABLE . " SET username_clean = '" . $username_clean . "' WHERE user_id = $key";
- $db->sql_query($sql);
- }
- trigger_error('INSTALLED');
- ?>
и при наличии проблемы с входом у игроков просто переходим по адресу FORUMURL/userclean.php
Кто к нам с чем зачем, тот от того и того!