Как заблокировать пользователя с сайта?

Board index phpBBex 2.x Поддержка

Description: У вас проблемы с phpBBex 2.x и вам необходима помощь? Спрашивайте здесь!
Forum rules: Одна тема — один вопрос или группа связанных вопросов. Обязательно формируйте внятный заголовок, максимально отражающий суть вопроса. Подробно описывайте проблему. Не забудьте указать версию phpBBex и какие моды установлены, по возможности добавьте скриншоты проблемы или ссылку на страницу с проблемой.
Moderator: Поддержка

Post #1by Nasgool » 09.03.2017, 21:37

Сразу скажу: с phpbbex я новичек. Да и в PHP как таковом тоже разбираюсь с помощью гугла.
Есть сайт, есть форум (2.0.4). Сделал сквозную авторизацию с сайта на форум.
База данных форума и есть база пользователей для сайта.
В некоторых случаях мне необходимо заблокировать пользователя.
Как это сделать из скрипта сайта?
Интегрировано все как в гугле:
Code: Select all
define('IN_PHPBB', true);
$phpbb_root_path = './forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
$request->enable_super_globals();
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
// check for logout request
$cp = request_var('cp', '');
// is it a logout? then kill the session!
if ($cp == "logout") {
    $user->session_kill();
    $user->session_begin();
}

Added after 3 minutes 50 seconds:
Забыл показать форму авторизации:
Code: Select all
<form id="login_form" method="post" action="forum/ucp.php?mode=login">
<input id="login_edit" type="text" name="username" placeholder="Введите свой логин">
<input id="login_edit" type="password" name="password" placeholder="и пароль">
<input id="login_check" type="checkbox" name="autologin">
<input type="hidden" name="redirect" value="../index.php" />
<input id="login_button" type="submit" value="Вход" name="login" />
</form>
Nasgool
Topic author, Новичок
Reputation: 1
With us: 7 months 8 days

Post #2by Sumanai » 10.03.2017, 18:07

Nasgool wrote:Интегрировано все как в гугле:
Ну, это по сути не интеграция, а просто проброс данных в оригинальный форум. БД форума и сайта тут никак не взаимодействуют.
На чём сайт работает то?
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1589
With us: 4 yaers 7 months

Post #3by Nasgool » 10.03.2017, 18:47

Сайт работает полностью на самописном скрипте
Nasgool
Topic author, Новичок
Reputation: 1
With us: 7 months 8 days

Post #4by Sumanai » 10.03.2017, 19:53

Сурово.
Ну раз
Nasgool wrote:База данных форума и есть база пользователей для сайта.
то и блокировать нужно средствами форума и через форум. И нужно учесть, что блокировка на форуме никак не скажется на сайте, хотя это, скорее всего, и не нужно, если на сайт пользователи повлиять никак не могут.
Большего без знания этого скрипта сказать не могу.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1589
With us: 4 yaers 7 months

Post #5by Nasgool » 11.03.2017, 19:24

Sumanai wrote:то и блокировать нужно средствами форума и через форум
В том и вопрос.
Как это правильно делается.
Напрямую в базу данных форума лесть не хочется, чуйка подсказывает что это не по феньшую.
Думаю, что есть способы правильнее и элегантнее. За тем сюда и обратился.

Added after 1 minute 48 seconds:
Скрипт сайта проверяет, авторизован ли пользователь. От этого напрямую зависит содержание страницы сайта

Added after 1 minute 55 seconds:
Проверяется вот так:
Code: Select all
if (!$user->data['is_registered']) {
    // Не авторизован
} else {
    // Авторизован
}

Added after 2 hours 3 minutes:
Может я не правильно сформулировал вопрос?
Я хочу узнать о механизме блокировки пользователя форума из скрипта сайта.

Added after 1 minute 12 seconds:
Если для этого существует корректный механизм.
Или все-таки нужно лесть в базу форума напрямую?
Nasgool
Topic author, Новичок
Reputation: 1
With us: 7 months 8 days

Post #6by Sumanai » 11.03.2017, 22:07

Сколько на вашем скрипте вообще написано? Не проще ли при такой постановке вопроса сделать всё при помощи форума? Ну там расширение Pages, или свои, если на них есть логика.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1589
With us: 4 yaers 7 months

Post #7by Nasgool » 12.03.2017, 15:49

Опишу подробнее.
Это сайт для La2 старых хроник и работающий по дальневосточному времени.
В игре отключен ГМшоп.
Все покупки и управление игровыми аккаунтами (не путать с аккаунтом форума) происходит на сайте (мой самописный скрипт).
Мой скрипт отслеживает попытки взлома магазина и банит все игровые аккаунты пользователя, отсылает лог мне на почту. И мне ручками приходится блокировать данного пользователя на форуме.
Хотелось бы автоматизировать процесс.

Вопрос простой:
Могу ли я из своего скрипта заблокировать пользователя форума.
Примерно так же как я получаю о нем информацию ($user->data['название поля']).

Added after 1 minute 36 seconds:
Если такого механизма не существует, то так и скажите, полезу базу ковырять.
Nasgool
Topic author, Новичок
Reputation: 1
With us: 7 months 8 days

Post #8by Sumanai » 12.03.2017, 16:11

\includes\mcp\mcp_ban.php, там только два действия- бан и разбан. По сути всё сводится к вызову функции user_ban(), определённой в \includes\functions_user.php, с корректными параметрами.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1589
With us: 4 yaers 7 months

Post #9by Nasgool » 12.03.2017, 16:21

Буду пробовать, отпишу результат
Nasgool
Topic author, Новичок
Reputation: 1
With us: 7 months 8 days

Post #10by Nasgool » 13.03.2017, 17:50

Пока ничего не вышло.
После отработки функции user_ban появляется запись в таблице banlist, но пользователь все равно может войти на сайт.
Почитал описание полей данной таблицы, переписал код.
Напрямую в таблицу вношу запись.
Все равно может войти.
Ради эксперимента забанил пользователя через админку.
Тот же эффект. Вернее никакого. Пользователь спокойно входит.
Куда копать подскажете?
А пока сам полезу в настройки форума.

Added after 20 minutes 18 seconds:
Все! Разобрался! Огромное спасибо за помощь.
Покопался в коде форума.
Напрямую вношу необходимые данные в banlist
Code: Select all
$arr = ['user_id' => $user->data['user_id'], 'ban_start' => time()];
$user->session_kill();
$user->session_begin();
$pdo = new PDO("mysql:host=localhost;dbname=$phpbbexdb;charset=utf8", $phpbbexdbuser, $phpbbexdbpass, $opt);
$data = $pdo->prepare('INSERT INTO `bb_banlist`(`ban_userid`, `ban_ip`, `ban_email`, `ban_start`, `ban_end`, `ban_exclude`, `ban_reason`, `ban_give_reason`) VALUES (:user_id, "", "", :ban_start, 0, 0, "Причина бана для админа", "Причина бана, видимая пользователю");');
$data->execute($arr);

Added after 8 seconds:
Тема закрыта
Nasgool
Topic author, Новичок
Reputation: 1
With us: 7 months 8 days

Post #11by Sumanai » 13.03.2017, 18:42

Nasgool wrote:Напрямую вношу необходимые данные в banlist
Скорее всего дело в параметрах, которые вы передавали в функцию. Думаю, лучше было бы разобраться с ней, так как в будущем формат полей может изменится, и ваш скрипт отвалится, а функция продолжит работать, ну или по крайней мере ошибка явно укажет на изменения в сигнатуре функции.
Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.
Sumanai M
Гуру
Avatar
Reputation: 1589
With us: 4 yaers 7 months


Return to Поддержка



Who is online (over the past 10 minutes)

Users browsing this forum: 1 guest