При разработке сайта и интеграции форума с остальной частью вашего сайта, желательно иметь централизованную систему входа для пользователей, для этого нужно инициировать сеанс vbulletin.
В этой статье я дам некоторые инструкции о том, как вы можете войти в систему и начать сеанс vbulletin, через форму из другой страницы, которая не относится к движку форума. Эта инструкция подается вам только в информационных целях и предназначена для быстрого старта, чтобы указать вам правильное направление при разработке. Нельзя просто скопировать и вставить код приведенный ниже. Вместо этого, используйте его, чтобы понять, как происходит процесс входа в систему форума, и как вы можете использовать его в скрипте, который будет входить в ваш форум Vbulletin 5.
Автор:
Шаг первый: инициализация системы Vbulletin 5.
Установить переменную – путь к установке форума.
1 | $vbpath = 'path/to/vbulletin'; |
Начало скрипта входа
1 2 3 4 | define('CSRF_PROTECTION', false); require_once($vbpath . '/includes/vb5/autoloader.php'); vB5_Autoloader::register($vbpath); vB5_Frontend_Application::init('config.php'); |
Шаг второй: отправить запрос API
Теперь, когда vBulletin инициализируется, мы можем послать запрос API, чтобы выполнить вход в систему.
1 2 3 4 | $username = 'Me'; $password = 'hunter2'; $api = Api_InterfaceAbstract::instance(); $loginInfo = $api->callApi('user', 'login', array($username, $password)); |
Шаг третий: установить куки
Возвращаемое значение вызова API ($loginInfo, в данном примере) будет содержать информацию о сеансе если логин был успешным. Если $loginInfo[‘errors’] пустой, логин был успешным. Если у нас есть успешный логин, нам теперь нужно установить правильные куки, чтобы пользователь вошел в систему.
1 2 | $rememberThisUser = true; vB5_Auth::setLoginCookies($loginInfo, '', $rememberThisUser); |
На этом этапе вход является выполненным и вы можете перенаправить пользователя обратно на страницу с которой он пришел или на домашнюю страницу и т.д.
Соберем все воедино.
Ниже находится образец, который содержит все вышеперечисленные коды. Я повторю мое предупреждение сверху. Вы должны избегать тупого копирования и использования этого кода как он есть. Вместо этого, используйте его, чтобы понять, как происходит процесс входа в систему в Vbulletin 5 и как вы можете создать свою собственную форма входа.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | <?php // Path to your vBulletin installation $vbpath = 'path/to/vbulletin'; // Start login script define('CSRF_PROTECTION', false); require_once($vbpath . '/includes/vb5/autoloader.php'); vB5_Autoloader::register($vbpath); vB5_Frontend_Application::init('config.php'); if ($_SERVER['REQUEST_METHOD'] == 'POST') { /////////////////////////////////////////////////////////////////////////////////////// // process the login form $api = Api_InterfaceAbstract::instance(); $loginInfo = $api->callApi('user', 'login', array($_POST['username'], $_POST['password'])); if (empty($loginInfo['errors'])) { // set cookies vB5_Auth::setLoginCookies($loginInfo, '', !empty($_POST['remember'])); // redirect somewhere Also see: vB5_Auth::doLoginRedirect(); header('Location: vb5_external_login.php'); exit; } else { // there was a problem logging in. // redirect or display errors here } } else { /////////////////////////////////////////////////////////////////////////////////////// // display a login form $userid = vB5_Cookie::get('userid', vB5_Cookie::TYPE_UINT); $hash = vB5_Cookie::get('password', vB5_Cookie::TYPE_STRING); if (empty($userid) OR empty($hash)) { ?> <form action="vb5_external_login.php" method="post"> <input type="text" name="username" value="" placeholder="User Name" /> <input type="password" name="password" value="" placeholder="Password" /> <label><input type="checkbox" name="remember" /> Stay logged in?</label> <input type="submit" value="Log In" /> </form> <?php } else { $api = Api_InterfaceAbstract::instance(); $userInfo = $api->callApi('user', 'fetchProfileInfo', array($userid)); echo $userInfo['username'] . ' is logged in.'; } } |
Примечание: этот код должен работать, по крайней мере при тестировании на Vbulletin 5.2.5 он работал. Я не разработчик форума и возможно данный код не будет работать с некоторыми предыдущими или более поздними версиями, и возможно его придется поменять в будущем. Я надеюсь, что это поможет создать скрипт входа в систему!
Рейтинг статьи
0%
Рейтинг
Оцените данный материал!
Вы должны авторизоваться чтобы опубликовать комментарий.