[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] Интеграция входа на конференцию с сайтом
В принципе исправить можно так. Формат вызова функции имеет вид
Измените формат вызова в скрипте, например так
Код: Выделить всё
get_username_string($mode, $user_id, $username, $username_colour = '', $guest_username = false, $custom_profile_url = false)
Код: Выделить всё
get_username_string('full', $user->data['user_id'], $user->data['username'], $user->data['user_colour'], $user->data['username'], 'http://forum.site.ru/memberlist.php?mode=viewprofile');
-
- phpBB 1.2.1
- Сообщения: 20
- Стаж: 16 лет 10 месяцев
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
rxu
Огромное спасибо, это именно то что нужно.
Сейчас начал собирать всё и переносить на хостинг, и тут вылезла большая задница.
В моём скрипте кусочки текста(кирилица) обрабатываются регекспами. Для корректной работы регексп с кирилицей на хостинге(мастерхост) в начале скрипта прописываю(setlocale(LC_ALL, 'ru_RU.CP1251');) и всё работало...но, как только подвешиваю туду код скрипта авторизации, то всё, сразу регекспы начинают косячить и на выходе я получаю иероглиыфы :(
Уже перепробовал всё и локали менял и кодировку пробовал менять и кодировку моих таблиц сменил(раньше были cp1251, теперь сменил на utf-8), ничего пока не помогло :(
Стот убрать то что относится к phpBB, сразу всё становится на свои места.
Подскажите, пожалуйста, как исправить ошибки?
Огромное спасибо, это именно то что нужно.
Сейчас начал собирать всё и переносить на хостинг, и тут вылезла большая задница.
В моём скрипте кусочки текста(кирилица) обрабатываются регекспами. Для корректной работы регексп с кирилицей на хостинге(мастерхост) в начале скрипта прописываю(setlocale(LC_ALL, 'ru_RU.CP1251');) и всё работало...но, как только подвешиваю туду код скрипта авторизации, то всё, сразу регекспы начинают косячить и на выходе я получаю иероглиыфы :(
Уже перепробовал всё и локали менял и кодировку пробовал менять и кодировку моих таблиц сменил(раньше были cp1251, теперь сменил на utf-8), ничего пока не помогло :(
Стот убрать то что относится к phpBB, сразу всё становится на свои места.
Подскажите, пожалуйста, как исправить ошибки?
-
- phpBB 1.2.1
- Сообщения: 20
- Стаж: 16 лет 10 месяцев
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Эксперементы показали, что косяк происходит из-того, что раньше мой скрипт был сохранён в ANSI, а при подключении авторизации phpbb, я его пересохранил в UTF-8(без BOM), но увы, проблема, как была так она и осталась и связана она именно с phpbb, хоть и косвенно :(
1)Скажите пожалуйста, а как же тогда phpbb адекватно работает с кирилицей? В чём фишка?
2)А можно ли тот скрипт в котором я подключаю авторизацию, оставить в ANSI или UTF-8(без BOM) это обязательно для всех скриптов, которые хоть краем соприкасаются с phpbb?
Заранее спасибо за ответы!
1)Скажите пожалуйста, а как же тогда phpbb адекватно работает с кирилицей? В чём фишка?
2)А можно ли тот скрипт в котором я подключаю авторизацию, оставить в ANSI или UTF-8(без BOM) это обязательно для всех скриптов, которые хоть краем соприкасаются с phpbb?
Заранее спасибо за ответы!
-
- Former team member
- Сообщения: 3739
- Стаж: 19 лет 10 месяцев
- Поблагодарили: 3 раза
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
ANSI и UTF-8 для английского алфавита - одно и тоже.
Непонятен вопрос - что значит "как же тогда"? Берет и работает. В ютф
Никаких ru_RU.CP1251 не поддерживается.
Непонятен вопрос - что значит "как же тогда"? Берет и работает. В ютф
Никаких ru_RU.CP1251 не поддерживается.
-
- phpBB 1.0.0
- Сообщения: 8
- Стаж: 15 лет 10 месяцев
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Как сделать чтобы при успешной авторизации с сайта, кроме аватара и имени пользователя отображалось еще и колличество новых личных сообщений, и при нажатии на эту строку открывался раздел "личные сообщения" на форуме.
-
- phpBB 1.2.1
- Сообщения: 20
- Стаж: 16 лет 10 месяцев
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Проблема именно с кирилицей.Rayden писал(а):ANSI и UTF-8 для английского алфавита - одно и тоже.
У мастерхост в доках написано, что нужно использовать эту локаль, тогда ф-ции работы со строками будут работать правильно, но у них ничего не сказано про слуйчий, когда используется utf.Rayden писал(а): В ютф Никаких ru_RU.CP1251 не поддерживается.
Думаю хоть где-то phpbb точно должен использовать регекспы, правильно? Вот у меня и вопрос, что они(разработчики phpbb) сделали, чтобы при сохранении в ютф регекспы(да и другие функции работы со строками) работали правильно?Rayden писал(а): Непонятен вопрос - что значит "как же тогда"? Берет и работает.
Приведу пример не правильной работы:
Вот скрипт:
Код: Выделить всё
<?php
setlocale(LC_ALL, 'ru_RU.CP1251');
echo strtoupper('Работает!');
?>
Если я уберу
Код: Выделить всё
setlocale(LC_ALL, 'ru_RU.CP1251');
Что я только не пробовал, ни в какю не хочет работать. Но phpbb в этих же условия работает, правльно? Вот я и спрашиваю, в чём причина, как phpbb умудряется корректно обрабатывать кирилицу?
-
- Former team member
- Сообщения: 3739
- Стаж: 19 лет 10 месяцев
- Поблагодарили: 3 раза
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Ты русский язык понимаешь?
Только ютф и никаких 1251 локалей.
Естественно, что у тебя нихрена не работает, если сам крипт в ютф, а локаль выставляешь 1251.
Наоборот, в данном случае все верно, все работает в ютф.
Только ютф и никаких 1251 локалей.
Естественно, что у тебя нихрена не работает, если сам крипт в ютф, а локаль выставляешь 1251.
С чего такие дурные выводы?p-vasya писал(а):Если я уберу
...
то оба скрипта выдают "Работает!", что тоже не верно
Наоборот, в данном случае все верно, все работает в ютф.
-
- phpBB 1.2.1
- Сообщения: 20
- Стаж: 16 лет 10 месяцев
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Логично, именно поэтому следом я её убрал ,что тоже не совсм решило проблему.Rayden писал(а):Ты русский язык понимаешь?
Только ютф и никаких 1251 локалей.
Естественно, что у тебя нихрена не работает, если сам крипт в ютф, а локаль выставляешь 1251.
Как с чего, смотрю на код и результат, вижу, что не то что я хотел.Rayden писал(а):С чего такие дурные выводы?
Наоборот, в данном случае все верно, все работает в ютф.
Код: Выделить всё
echo strtoupper('Работает!');
Пример второй:
preg_match_all("/\d*?(\w+)\d*?/", $text, $parse);
Сохраняю в UTF-8:
Скармливаю текст, возвращает пустой массив.
Сохраняю в ANSI:
Скармливаю тот же самый текст, получаю на выходе массив слов.
Что здесь не правильно? МОжет я где туплю?
-
- Former team member
- Сообщения: 3739
- Стаж: 19 лет 10 месяцев
- Поблагодарили: 3 раза
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Какое отношение твое обучение php имеет к данной теме?
-
- phpBB 1.2.1
- Сообщения: 20
- Стаж: 16 лет 10 месяцев
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Причём здесь обучение пхп? Мой скрипт без phpBB, работает и нареканий я к нему не имею.Rayden писал(а):Какое отношение твое обучение php имеет к данной теме?
Но как не крути, мой скрипт и phpBB мне подружить надо.
Если вы видите или знаете где именно я туплю/допускаю ошибку, почему бы об этом не сказать? Ведь тогда моментально решаться все проблемы и не нужно будет дальше продолжать спор.
1)Что я делаю не так? Как можно исправить ошибку?
2)Так же без ответа остался вопрос, можно ли мой скрипт, в котором будет встроена авторизация phpBB сохранить в ansi?
-
- Former team member
- Сообщения: 3739
- Стаж: 19 лет 10 месяцев
- Поблагодарили: 3 раза
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
1. Научи свой скрипт нормально работать с ютф, пока же он видимо этого не умеет.
2. можно, если не будешь использовать русский язык.
Ты вообще какой-то нерусский. Третий раз тебе говорю - форум работает ТОЛЬКО в ютф.
ANSI - это только английский язык.
1251 - это тот же ansi, но в котором добавлены однобайтовые русские символы.
ютф - совпадает по английским символам с ansi, но русские символы там имеют совершенно другие коды.
Поэтому когда у тебя только английский текст, пофиг в какой кодировке сохранять.
Ты тупишь со своими кодировками. А вопрос "как php работает с utf " тут не по теме. Зайди на php.net и почитай об особенностях функций php при обработке многобайтовых кодировок.
Например strtoupper не умеет нормально работать с многобайтовыми кодировками, для этого есть mb_strtoupper
Поэтому я и говорю - твое обучение php для этой темы оффтопик. А то, что ты не знаешь элементарного - различия кодировок и мультибайтных аналогов функций в php и выдает тебя как чайника.
2. можно, если не будешь использовать русский язык.
Ты вообще какой-то нерусский. Третий раз тебе говорю - форум работает ТОЛЬКО в ютф.
ANSI - это только английский язык.
1251 - это тот же ansi, но в котором добавлены однобайтовые русские символы.
ютф - совпадает по английским символам с ansi, но русские символы там имеют совершенно другие коды.
Поэтому когда у тебя только английский текст, пофиг в какой кодировке сохранять.
Ты тупишь со своими кодировками. А вопрос "как php работает с utf " тут не по теме. Зайди на php.net и почитай об особенностях функций php при обработке многобайтовых кодировок.
Например strtoupper не умеет нормально работать с многобайтовыми кодировками, для этого есть mb_strtoupper
Поэтому я и говорю - твое обучение php для этой темы оффтопик. А то, что ты не знаешь элементарного - различия кодировок и мультибайтных аналогов функций в php и выдает тебя как чайника.
-
- phpBB 1.2.1
- Сообщения: 20
- Стаж: 16 лет 10 месяцев
-
- phpBB 1.0.0
- Сообщения: 8
- Стаж: 15 лет 10 месяцев
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Как сделать чтобы при успешной авторизации с сайта, кроме аватара и имени пользователя отображалось еще и колличество новых личных сообщений, и при нажатии на эту строку открывался раздел "личные сообщения" на форуме?
-
- phpBB Guru
- Сообщения: 16947
- Стаж: 18 лет 11 месяцев
- Откуда: Красноярск
- Благодарил (а): 549 раз
- Поблагодарили: 1700 раз
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Xandir
Вы упорно копируете один и тот же вопрос уже в третий или пятый раз.
Во-первых, к теме он вообще не относится, по большому счету.
Во-вторых, для этого надо выдрать скрипт из функции page_header в includes/functions.php, пока времени на это нет.
Вкратце
Потом передаете переменную l_privmsgs_text_unread в шаблон или используете как есть в скрипте. Ссылка генерируется так
Разбирайтесь 
Вы упорно копируете один и тот же вопрос уже в третий или пятый раз.

Во-первых, к теме он вообще не относится, по большому счету.
Во-вторых, для этого надо выдрать скрипт из функции page_header в includes/functions.php, пока времени на это нет.
Вкратце
Код: Выделить всё
$l_privmsgs_text = $l_privmsgs_text_unread = '';
$s_privmsg_new = false;
// Obtain number of new private messages if user is logged in
if (!empty($user->data['is_registered']))
{
if ($user->data['user_new_privmsg'])
{
$l_message_new = ($user->data['user_new_privmsg'] == 1) ? $user->lang['NEW_PM'] : $user->lang['NEW_PMS'];
$l_privmsgs_text = sprintf($l_message_new, $user->data['user_new_privmsg']);
if (!$user->data['user_last_privmsg'] || $user->data['user_last_privmsg'] > $user->data['session_last_visit'])
{
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_last_privmsg = ' . $user->data['session_last_visit'] . '
WHERE user_id = ' . $user->data['user_id'];
$db->sql_query($sql);
$s_privmsg_new = true;
}
else
{
$s_privmsg_new = false;
}
}
else
{
$l_privmsgs_text = $user->lang['NO_NEW_PM'];
$s_privmsg_new = false;
}
$l_privmsgs_text_unread = '';
if ($user->data['user_unread_privmsg'] && $user->data['user_unread_privmsg'] != $user->data['user_new_privmsg'])
{
$l_message_unread = ($user->data['user_unread_privmsg'] == 1) ? $user->lang['UNREAD_PM'] : $user->lang['UNREAD_PMS'];
$l_privmsgs_text_unread = sprintf($l_message_unread, $user->data['user_unread_privmsg']);
}
}
Код: Выделить всё
append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&folder=inbox');

-
- phpBB 1.0.0
- Сообщения: 8
- Стаж: 15 лет 10 месяцев
Re: [FAQ RC] Интеграция входа на конференцию с сайтом
Спасибо огромное за помощь! Всё получилось! Только вот что-то ссылки не генерируются той функцией и я сделал прямые ссылки на форум. Немножко не правильно но всё работает :-)
Код: Выделить всё
$l_privmsgs_text = $l_privmsgs_text_unread = '';
if (!empty($user->data['is_registered']))
{
if ($user->data['user_new_privmsg'])
{
$l_message_new = ($user->data['user_new_privmsg'] == 1) ? $user->lang['NEW_PM'] : $user->lang['NEW_PMS'];
$l_privmsgs_text = sprintf($l_message_new, $user->data['user_new_privmsg']);
}
else
{
$l_privmsgs_text = $user->lang['NO_NEW_PM'];
}
$l_privmsgs_text_unread = '';
if ($user->data['user_unread_privmsg'] && $user->data['user_unread_privmsg'] != $user->data['user_new_privmsg'])
{
$l_message_unread = ($user->data['user_unread_privmsg'] == 1) ? $user->lang['UNREAD_PM'] : $user->lang['UNREAD_PMS'];
$l_privmsgs_text_unread = sprintf($l_message_unread, $user->data['user_unread_privmsg']);
}
}
echo '<a href="/forum/ucp.php">Личный раздел</a>';
echo '<br><br>';
echo '<a href="/forum/ucp.php?i=pm&folder=inbox">' . $l_privmsgs_text . '</a>';
echo '<br><br>';
echo $l_privmsgs_text_unread;