[FAQ] Интеграция входа на конференцию phpBB с сайтом

Темы по наиболее часто задаваемым вопросам без привязки к версии phpBB. Читать в первую очередь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x/3.3.x | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

[FAQ] Интеграция входа на конференцию phpBB с сайтом

Сообщение rxu »

Ниже приведен пример скрипта с интегрированной формой входа на конференцию (общего вида).
В приведённом примере папка, в которой находится скрипт, находится на один уровень выше папки конференции. Файлы конференции находятся в папке phpBB3 относительно скрипта.

По коду скрипта имеются пояснительные комментарии (на английском языке).

Вопросы принимаются в этой теме.

Версия 1.1.0 с интегрированным списком онлайн и легендой групп здесь.
Версия 1.2.0 с аватарой здесь.

Версия 2.0.1 для phpBB 3.2/3.3 здесь.

login_1.0.5.zip
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось rxu 22.05.2020 8:37, всего редактировалось 6 раз.
Изображение
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение rxu »

RamireZ
Во-первых, регистрация в phpBB3 - не только внесение строки в одну таблицу пользователей. Для прояснения, смотрите function user_add в includes/functions_user.php. Её и советую использовать для добавления пользователей.
Во-вторых, для аутентификации используется поле username_clean, а не username.
В-третьих, для получения значений формы используйте функцию request_var с параметром true, если это касается получения строк в UTF8.
Изображение
RamireZ
phpBB 1.0.0
Сообщения: 2
Стаж: 15 лет 1 месяц

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение RamireZ »

Благодарю за оперативный ответ. Все три пункта как раз в точку. Все работает.
DevelFish
phpBB 1.2.0
Сообщения: 10
Стаж: 15 лет 1 месяц

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение DevelFish »

Здравствуйте.
Спасибо за скрипт работает хорошо:)
Но вот когда неавторизированный пользователь хочет войти на форум, он вводит логин и пароль в форму на главной странице, или жмет ссылку "Войти"(или любые другие действия требующие авторизации), то попадает на страницу с формой для ввода логина и пароля.

Так вот вопрос как сделать чтобы данные вводимые пользователем(логин и пароль) отсылались на файл общей авторизации http://site.ru/login.php
а не на http://site.ru/forum/ucp.php?mode=login ... =блаблабла ?
Или хотя бы подскажите где копать?
rumos
phpBB 1.0.0
Сообщения: 1
Стаж: 15 лет 1 месяц

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение rumos »

привет всем.

прошу простить мою наглость, поиском не пользовался (на вашем сайте), но вдруг кто подскажет.
вводная:
есть дамп от phpBB версии 3.10. (кодировка UTF-8)
есть CMS. она написана на с++ поэтому подключить, наверное очень удобный, плагин для авторизации нет возможности (IPC не подходит по ряду причин).
нужно организовать возможность авторизации внутри системы по логинам и паролям от пользователей phpBB (нужна только авторизация, т.е. функция, которая вернёт номер строки юзера(авторизация верна) или 0(и пофиг почему) )
вопрос:
смотрю я в таблицу phpbb_users.. и вижу что пароль имеет длину 40 байт (по крайней мере поле), и не md5 это даже и близко (не по длине не на вид ).
не обладает ли кто информацией, что есть это поле в реальности, и каким методом прекрасные 32 байта превращаются в 40 (если СП5 не участвует, то опишите кто-нибудь алгоритм в терминах пароль, хешируем/шифруем с ключом который берём оттуда-то и т.д.) ?

спасибо.
ушёл копать исходники..

Добавлено спустя 2 часа 5 минут 18 секунд:
1. длина хеша пароля - 34 байта.
2. первые 3 байта - сигналка.
3. _hash_crypt_private - используется в проверке авторизации и в phpbb_hash. в первом и во втором случае - одинаковые аргументы первый (оригинальный пароль) и последний (алфавит под base64). вывод- второй параметр (в первом случае результат какой-то функции из случайной сигнатуры преобразованной по base64 видимо, не разбирал её; во-втором случае - уже имеющийся хеш ) либо не имеет значения, либо оба раза содержит ключевую информацию. 3.1. - не верю. 3.2. -допустим, временный вывод - преобразованный пароль содержит ту случайную подпись.
4. анализируем _hash_crypt_private
$output = '*';
//дефолтный результат

if (substr($setting, 0, 3) != '$H$')
{
return $output;
}
// 4.1. 2 - верно.

$count_log2 = strpos($itoa64, $setting[3]);
// 4.2. 4-ый байт что-то содержит

if ($count_log2 < 7 || $count_log2 > 30)
{
return $output;
}
//4.3. загадочно.. впрочем нас устраивает, это равно '9' (как символ, видимо и AsIs тоже )

$count = 1 << $count_log2;
//4.4. двигаем 1-цу влево 9 раз, получаем 2**9 == 512. ок.
$salt = substr($setting, 4, 8);
//4.5. salt == "AyacHVuG". например.

if (strlen($salt) != 8)
{
return $output;
}
//4.6. милая глупость. почему бы не проверить ещё раньше(в районе проверки сигналки ), что длина setting==34.
//пространные рассуждения об использовании built-in md5 и извинения за последующие строчки.
$hash = md5($salt . $password, true);
do
{
$hash = md5($hash . $password, true);
}
while (--$count);
//4.7. либо $hash=pack('H*', $hash) если пхп старый.
//как я понимаю делается MD5 512 раз ? ..убить бы за такое.. не такой уж md5 и примитив..
$output = substr($setting, 0, 12);
//4.8 подбираем сигналку и сальт
$output .= _hash_encode64($hash, 16, $itoa64);
//4.9 блин :) ...(спустя некоторое время - резюмируя - перевод метода _hash_encode64 и создание аналога 4 привело к желаемому результату )

Добавлено спустя 3 минуты 36 секунд:
к чему это всё.. лучше бы водки выпили.

Добавлено спустя 3 минуты 19 секунд:
последний з.ы. md5 в php5+ при задании аргумента true выдаёт rawdata, при php5- - возможность по умолчанию отсутствует, потому и танцы с pack.
Аватара пользователя
DK7
Former team member
Сообщения: 1008
Стаж: 18 лет 9 месяцев
Откуда: Кишинёв
Благодарил (а): 1 раз

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение DK7 »

rumos
используйте тэги

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

читать невозможно
alla_c
phpBB 1.0.0
Сообщения: 7
Стаж: 15 лет 1 месяц

Как дешифровать пароль из БД

Сообщение alla_c »

Как можно программно дешифровать пароль юзеров из БД и возможно ли это вообще.
В результате нужен пароль в нормальном виде

Нужно, чтобы организовать вход в PHP BB с другого сайта.
Аватара пользователя
Rayden
Former team member
Сообщения: 3739
Стаж: 19 лет 10 месяцев
Поблагодарили: 3 раза

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение Rayden »

никак. Операция необратима.
Чтобы организовать вход, дешифрация паролей не нужна.
Шифруй так же и сравнивай хеши.
phpBB2 FAQ
phpBB3 FAQ
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение rxu »

alla_c писал(а):Нужно, чтобы организовать вход в PHP BB с другого сайта.
А зачем дешифровать пароли?
Изображение
alla_c
phpBB 1.0.0
Сообщения: 7
Стаж: 15 лет 1 месяц

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение alla_c »

Дешифровать надо, чтобы программно войти на форум, используя логин и пароль, взятые из БД форума.

Если это (дешифровать) никак нельзя сделать, подскажите, где находится функция login($username, $password, $autologin), которая используется в файле Login.php с первой страницы этой темы.
Может, удастся ее немного изменить, чтобы авторизация шла, допустим, по e-mail и логину (по незашифрованным полям)
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение rxu »

Фокус: можно осуществить поиск функции путем поиска в файлах текста function login.
См. /includes/auth.php.
Изображение
DevelFish
phpBB 1.2.0
Сообщения: 10
Стаж: 15 лет 1 месяц

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение DevelFish »

Мне так и не ответили, или никто не знает ответ:(
Нашел 4 файла-шаблона где есть форма авторизации:
index_body.html
login_body.html
login_forum.html
viewforum_body.html

Нужно править <form method="post" action= в них или в файле functions.php?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение rxu »

includes/functions.php
S_LOGIN_ACTION
а лусшу собственную переменную таким же образом задать и её использовать.
Изображение
DevelFish
phpBB 1.2.0
Сообщения: 10
Стаж: 15 лет 1 месяц

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение DevelFish »

rxu писал(а):а лусшу собственную переменную таким же образом задать и её использовать.
то есть в файле includes/functions.php например после

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

'S_LOGIN_ACTION'	=> (!defined('ADMIN_START')) ? append_sid("{$phpbb_root_path...,
добавить

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

'S_MOYLOGIN_ACTION' => "/login.php",
и соответственно заменить в файлах

index_body.html
login_body.html
login_forum.html
viewforum_body.html

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

action="{S_LOGIN_ACTION}"
на

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

action="{S_MOYLOGIN_ACTION}"
?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение rxu »

Да, примерно так.
Изображение
DevelFish
phpBB 1.2.0
Сообщения: 10
Стаж: 15 лет 1 месяц

Re: [FAQ RC] Интеграция входа на конференцию с сайтом

Сообщение DevelFish »

Спасибо:) Все работает, осталось переобразовать кодировку;)
Вот еще вопрос существует ли функцыя или скрипт "Забыли пароль"? - чтобы сделать общее восстановление пароля для форума и сайта так как есть уже общая регистрация и вход.
Перенесено из форума FAQ (phpBB 3.0.x) в форум FAQ 28.09.2016 15:02 модератором rxu

Вернуться в «FAQ»