[FAQ] Интеграция входа на конференцию phpBB с сайтом
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x/3.3.x | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x/3.3.x | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение

-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
[FAQ] Интеграция входа на конференцию phpBB с сайтом
Ниже приведен пример скрипта с интегрированной формой входа на конференцию (общего вида).
В приведённом примере папка, в которой находится скрипт, находится на один уровень выше папки конференции. Файлы конференции находятся в папке phpBB3 относительно скрипта.
По коду скрипта имеются пояснительные комментарии (на английском языке).
Вопросы принимаются в этой теме.
Версия 1.1.0 с интегрированным списком онлайн и легендой групп здесь.
Версия 1.2.0 с аватарой здесь.
Версия 2.0.1 для phpBB 3.2/3.3 здесь.
В приведённом примере папка, в которой находится скрипт, находится на один уровень выше папки конференции. Файлы конференции находятся в папке phpBB3 относительно скрипта.
По коду скрипта имеются пояснительные комментарии (на английском языке).
Вопросы принимаются в этой теме.
Версия 1.1.0 с интегрированным списком онлайн и легендой групп здесь.
Версия 1.2.0 с аватарой здесь.
Версия 2.0.1 для phpBB 3.2/3.3 здесь.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось rxu 22.05.2020 8:37, всего редактировалось 6 раз.
-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
RamireZ
Во-первых, регистрация в phpBB3 - не только внесение строки в одну таблицу пользователей. Для прояснения, смотрите function user_add в includes/functions_user.php. Её и советую использовать для добавления пользователей.
Во-вторых, для аутентификации используется поле username_clean, а не username.
В-третьих, для получения значений формы используйте функцию request_var с параметром true, если это касается получения строк в UTF8.
Во-первых, регистрация в phpBB3 - не только внесение строки в одну таблицу пользователей. Для прояснения, смотрите function user_add в includes/functions_user.php. Её и советую использовать для добавления пользователей.
Во-вторых, для аутентификации используется поле username_clean, а не username.
В-третьих, для получения значений формы используйте функцию request_var с параметром true, если это касается получения строк в UTF8.
-
- phpBB 1.0.0
- Сообщения: 2
- Стаж: 15 лет 1 месяц
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Благодарю за оперативный ответ. Все три пункта как раз в точку. Все работает.
-
- phpBB 1.2.0
- Сообщения: 10
- Стаж: 15 лет 1 месяц
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Здравствуйте.
Спасибо за скрипт работает хорошо:)
Но вот когда неавторизированный пользователь хочет войти на форум, он вводит логин и пароль в форму на главной странице, или жмет ссылку "Войти"(или любые другие действия требующие авторизации), то попадает на страницу с формой для ввода логина и пароля.
Так вот вопрос как сделать чтобы данные вводимые пользователем(логин и пароль) отсылались на файл общей авторизации http://site.ru/login.php
а не на http://site.ru/forum/ucp.php?mode=login ... =блаблабла ?
Или хотя бы подскажите где копать?
Спасибо за скрипт работает хорошо:)
Но вот когда неавторизированный пользователь хочет войти на форум, он вводит логин и пароль в форму на главной странице, или жмет ссылку "Войти"(или любые другие действия требующие авторизации), то попадает на страницу с формой для ввода логина и пароля.
Так вот вопрос как сделать чтобы данные вводимые пользователем(логин и пароль) отсылались на файл общей авторизации http://site.ru/login.php
а не на http://site.ru/forum/ucp.php?mode=login ... =блаблабла ?
Или хотя бы подскажите где копать?
-
- phpBB 1.0.0
- Сообщения: 1
- Стаж: 15 лет 1 месяц
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
привет всем.
прошу простить мою наглость, поиском не пользовался (на вашем сайте), но вдруг кто подскажет.
вводная:
есть дамп от 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.
прошу простить мою наглость, поиском не пользовался (на вашем сайте), но вдруг кто подскажет.
вводная:
есть дамп от 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.
-
- Former team member
- Сообщения: 1008
- Стаж: 18 лет 9 месяцев
- Откуда: Кишинёв
- Благодарил (а): 1 раз
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
rumos
используйте тэги
используйте тэги
Код: Выделить всё
читать невозможно
-
- phpBB 1.0.0
- Сообщения: 7
- Стаж: 15 лет 1 месяц
Как дешифровать пароль из БД
Как можно программно дешифровать пароль юзеров из БД и возможно ли это вообще.
В результате нужен пароль в нормальном виде
Нужно, чтобы организовать вход в PHP BB с другого сайта.
В результате нужен пароль в нормальном виде
Нужно, чтобы организовать вход в PHP BB с другого сайта.
-
- Former team member
- Сообщения: 3739
- Стаж: 19 лет 10 месяцев
- Поблагодарили: 3 раза
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
никак. Операция необратима.
Чтобы организовать вход, дешифрация паролей не нужна.
Шифруй так же и сравнивай хеши.
Чтобы организовать вход, дешифрация паролей не нужна.
Шифруй так же и сравнивай хеши.
-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
А зачем дешифровать пароли?alla_c писал(а):Нужно, чтобы организовать вход в PHP BB с другого сайта.
-
- phpBB 1.0.0
- Сообщения: 7
- Стаж: 15 лет 1 месяц
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Дешифровать надо, чтобы программно войти на форум, используя логин и пароль, взятые из БД форума.
Если это (дешифровать) никак нельзя сделать, подскажите, где находится функция login($username, $password, $autologin), которая используется в файле Login.php с первой страницы этой темы.
Может, удастся ее немного изменить, чтобы авторизация шла, допустим, по e-mail и логину (по незашифрованным полям)
Если это (дешифровать) никак нельзя сделать, подскажите, где находится функция login($username, $password, $autologin), которая используется в файле Login.php с первой страницы этой темы.
Может, удастся ее немного изменить, чтобы авторизация шла, допустим, по e-mail и логину (по незашифрованным полям)
-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Фокус: можно осуществить поиск функции путем поиска в файлах текста function login.
См. /includes/auth.php.
См. /includes/auth.php.
-
- phpBB 1.2.0
- Сообщения: 10
- Стаж: 15 лет 1 месяц
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Мне так и не ответили, или никто не знает ответ:(
Нашел 4 файла-шаблона где есть форма авторизации:
index_body.html
login_body.html
login_forum.html
viewforum_body.html
Нужно править <form method="post" action= в них или в файле functions.php?
Нашел 4 файла-шаблона где есть форма авторизации:
index_body.html
login_body.html
login_forum.html
viewforum_body.html
Нужно править <form method="post" action= в них или в файле functions.php?
-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
includes/functions.php
S_LOGIN_ACTION
а лусшу собственную переменную таким же образом задать и её использовать.
S_LOGIN_ACTION
а лусшу собственную переменную таким же образом задать и её использовать.
-
- phpBB 1.2.0
- Сообщения: 10
- Стаж: 15 лет 1 месяц
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
то есть в файле includes/functions.php например послеrxu писал(а):а лусшу собственную переменную таким же образом задать и её использовать.
Код: Выделить всё
'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}"
-
- phpBB 1.2.0
- Сообщения: 10
- Стаж: 15 лет 1 месяц
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Спасибо:) Все работает, осталось переобразовать кодировку;)
Вот еще вопрос существует ли функцыя или скрипт "Забыли пароль"? - чтобы сделать общее восстановление пароля для форума и сайта так как есть уже общая регистрация и вход.
Вот еще вопрос существует ли функцыя или скрипт "Забыли пароль"? - чтобы сделать общее восстановление пароля для форума и сайта так как есть уже общая регистрация и вход.