[MOD] auto registration in PHPBB (авторегистрация в PHPBB)

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • [MOD] auto registration in PHPBB (авторегистрация в PHPBB)

      Привет друзья, долго мучался с форумом (так как считаю что форум все таки нужен в игре!) но надоело то, что постоянно регистрируются боты с своей рекламой. Поэтому решил сделать так:
      1. Устанавливаю форум.
      2. Закрываю в нем регистрацию.
      3. Пишу мод для автоматической регистрации пользователей из игры при переходе на форум.
      4. ???
      5. PROFIT!!!))
      Итак, прелюдия, взял старенький форум PHPBB откуда то отсюда, форум бесплатный и довольно таки популярен, то есть есть все функции которые потом пригодятся в игре.
      Форум поставлен в БД в отдельную таблицу (затер чтобы не рекламировать свой адрес)
      Думаю тут все понятно. Беремся за написание кода.

      Итак, ищем файл class.ShowBoardPage.php в "includes/pages/game"
      смело, решительно удаляем все оттуда! и вставляем следующий код:

      PHP Source Code

      1. <?php
      2. class ShowBoardPage extends AbstractPage
      3. {
      4. public static $requireModule = 0;
      5. function __construct()
      6. {
      7. parent::__construct();
      8. }
      9. function show()
      10. {
      11. global $CONF,$LNG,$USER;
      12. $mail = $GLOBALS['DATABASE']->countquery("SELECT `username` FROM `forum`.`phpbb_users` WHERE `user_email` = '".$USER['email']."';");
      13. if($mail !="")
      14. {
      15. //если мыло такое уже зарегано, то редиректим на форум
      16. $forum = $CONF['forum_url'];
      17. }else{
      18. // если такого мыла нет, то регистрируем юзера
      19. $rand_seed = '8a414598ba18a512b8fe97f1497fa22b';
      20. $val = $rand_seed . microtime();
      21. $val = md5($val);
      22. $salt= substr($val, 4, 16);
      23. $text = preg_replace('#(?:[\x00-\x1F\x7F]+|(?:\xC2[\x80-\x9F])+)#', '', $USER['username']);
      24. $text = preg_replace('# {2,}#', ' ', $USER['username']);
      25. $name_clean= mb_strtolower($text);
      26. $name_clean= trim($name_clean);
      27. // если же подобного мыла нет, то создаем нового и опять таки редиректим на форум
      28. $hemail = crc32(strtolower($USER['email']) . strlen($USER['email']));
      29. $GLOBALS['DATABASE']->query("INSERT INTO `forum`.`phpbb_users` SET
      30. user_id = '".$USER['id']."',
      31. username = '".$USER['username']."',
      32. username_clean ='".$name_clean."',
      33. user_email ='".$USER['email']."',
      34. user_email_hash ='".$hemail."',
      35. user_password ='".$USER['password']."',
      36. user_regdate ='".TIMESTAMP."',
      37. user_form_salt ='".$salt."',
      38. user_permissions ='',
      39. user_sig ='',
      40. group_id ='2',
      41. user_ip ='".$USER['ip_at_reg']."';");
      42. $GLOBALS['DATABASE']->query("insert into `forum`.`phpbb_user_group`
      43. (`user_id`, `user_pending`, `group_id`)
      44. values (".$USER['id'].", 0, 2)");
      45. $GLOBALS['DATABASE']->query("update `forum`.`phpbb_config` set `config_value`=`config_value`+1 where `config_name`='num_users'");
      46. $GLOBALS['DATABASE']->query("update `forum`.`phpbb_config` set `config_value`= ".$USER['id']." where `config_name`='newest_user_id'");
      47. $GLOBALS['DATABASE']->query("update `forum`.`phpbb_config` set `config_value`= '".$USER['username']."' where `config_name`='newest_username'");
      48. $forum = $CONF['forum_url'];}
      49. if(filter_var($CONF['forum_url'], FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED)) {
      50. HTTP::sendHeader('Location', $forum );
      51. } else {
      52. $this->printMessage($LNG['bad_forum_url']);
      53. }
      54. }
      55. }
      56. ?>
      Display All
      Ну вот собственно и все)))

      ВНИМИНИЕ!!! В данном моде есть одна проблема!
      Долго расписывать в чем дело, но суть такова, если у игрока ник состоит из двух слов, например "Люблю маму", то с такой формой регистрации он не сможет авторизоваться!
      На просторах интернета нашел таки ответ как это можно поправить, в корне форума создаем файл php с нужным вам названием у меня к примеру userclean.php и вставляем в него следующее



      PHP Source Code

      1. <?php
      2. /**
      3. *
      4. ФАЙЛ ДЛЯ РЕНЕЙМА, ЧТОБЫ НЕ ГЛЮЧИЛИ ИМЕНА НА РУССКОМ
      5. *
      6. */
      7. /**
      8. * @ignore
      9. */
      10. define('IN_PHPBB', true);
      11. $phpbb_root_path = './';
      12. $phpEx = substr(strrchr(__FILE__, '.'), 1);
      13. include($phpbb_root_path . 'common.' . $phpEx);
      14. // Start session management
      15. $user->session_begin();
      16. $auth->acl($user->data);
      17. $user->setup();
      18. // Did user forget to login? Give 'em a chance to here ...
      19. if ($user->data['user_id'] == ANONYMOUS)
      20. {
      21. login_box('', $user->lang['LOGIN_ADMIN'], $user->lang['LOGIN_ADMIN_SUCCESS'], false);
      22. }
      23. // Is user any type of admin? No, then stop here, each script needs to
      24. // check specific permissions but this is a catchall
      25. if (!$auth->acl_get('a_'))
      26. {
      27. trigger_error('NO_ADMIN');
      28. }
      29. $users = array();
      30. $sql = 'SELECT user_id, username FROM ' . USERS_TABLE;
      31. $result = $db->sql_query($sql);
      32. // Get options values for each user
      33. while ($row = $db->sql_fetchrow($result))
      34. {
      35. $users[$row['user_id']] = $row['username'];
      36. }
      37. $db->sql_freeresult($result);
      38. foreach ($users as $key => $value)
      39. {
      40. $username_clean = $db->sql_escape(utf8_clean_string($value));
      41. // echo $username_clean . '<br />';
      42. $sql = 'UPDATE ' . USERS_TABLE . " SET username_clean = '" . $username_clean . "' WHERE user_id = $key";
      43. $db->sql_query($sql);
      44. }
      45. trigger_error('INSTALLED');
      46. ?>
      Display All

      и при наличии проблемы с входом у игроков просто переходим по адресу FORUMURL/userclean.php
      Кто к нам с чем зачем, тот от того и того! :D
    • а какой смысл? была мысль построить свой форум, но не вижу смысла в таком количестве затрат трудов если есть готовые решения
      Кто к нам с чем зачем, тот от того и того! :D
    • Я в отдельной сделал, чтоб не было путаницы. Хотя перепутать сложно префиксы разные в бд у игры и форума. Делайте как вам удобней
      Кто к нам с чем зачем, тот от того и того! :D
    • а да не забываем еще.. так как мил человек крутой спец умолчал по поводу тпл.. вписать обращение которое уважаемый забыл напомнить
      <a title="Forum" id="ForumM" href="?page=board" target="_blank">
      <span class="forum"></span>

      если вставите просто адрес не фига работать не будет

      так же если меняем перфикс сменить его и в другом месте. то есть board.php - базу лучше разносить, так удобней и не затрете случайно игру.. по остальным вопросам где мы нашли баги у уважаемого спеца, обращайтесь ! поможем .. и подарим просто так, не фиг платить злодеям.. у кого не получится так сделать обращаемся помогу, тут есть специально думаю упущенные моменты (нюансы) чтоб затянуть на деньги и части кода не хватает, а человек очень много взял у neiro и ряда ребят и выдает разработки за свои... будьте аккуратны с ним платите только по факту и не давайте доступ к базе данных и файлам ..пусть пишет мануал за это берет деньги чем продает свои наработки вам и вы после этого являетесь владельцем.. будьте умнее не попадайте как мы !

      The post was edited 4 times, last by Shandow ().

    • так добавление не большое - у кого на новой версии phpBB 3.2 форума и кто привязывал к игре - проблемы с регистрацией русскоязычных ников то есть пользователь вроде и зареген на форуме но не подходит пароль , смотрите кодировку форума правьте там ..