Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

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

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

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

[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 раз.
Изображение
construktor
phpBB 1.0.0
Сообщения: 1
Стаж: 14 лет 5 месяцев

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

Сообщение construktor »

Eсть форум на forum.mysite.ru и каталог на catalog.mysite.ru Общую авторизацию поставил без проблем. Стоит задача - предоставить возможность пользователям зарегистрироваться на форуме при этом не покидая каталога. Как это можно реализовать?
Zerox
phpBB 1.0.0
Сообщения: 1
Стаж: 14 лет 3 месяца

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

Сообщение Zerox »

Здравствуйте. У меня что то с кодировкой. Посмотрите www.joker-main.com/login.php
стало это сразу после того, как я добавил дизайн require'ами...
Аватара пользователя
crash
Former team member
Сообщения: 6517
Стаж: 19 лет 9 месяцев
Откуда: Бердск

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

Сообщение crash »

форум работает в utf-8
Как правильно задавать вопросы
Для особо одаренных: поиск - это есть круто.
FAQ v.2 | FAQ v.3 | Шаблон запроса
OTSHELNIK
phpBB 1.0.0
Сообщения: 1
Стаж: 14 лет 2 месяца

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

Сообщение OTSHELNIK »

а где можно найти подобный скрипт как из первого поста,но только с регистрацией нового пользователя?
Аватара пользователя
AllFuns
phpBB 1.4.0
Сообщения: 39
Стаж: 14 лет 10 месяцев
Откуда: Иваново

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

Сообщение AllFuns »

Подскажите пожалуйста 2 момента по интеграции:
1. Будет ли обновляться статус онлайн для пользователя,если он не заходит на сам форум,а перемещается только на сайте?
2.Можно ли сделать вывод данного статуса как то на самом сайте?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16371
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1745 раз

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

Сообщение rxu »

AllFuns писал(а):Будет ли обновляться статус онлайн для пользователя,если он не заходит на сам форум,а перемещается только на сайте?
Да.
AllFuns писал(а):Можно ли сделать вывод данного статуса как то на самом сайте?
Теоретически - да, но практически есть варианты. На примере viewtopic.php

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

// Generate online information for user
if ($config['load_onlinetrack'] && sizeof($id_cache))
{
	$sql = 'SELECT session_user_id, MAX(session_time) as online_time, MIN(session_viewonline) AS viewonline
		FROM ' . SESSIONS_TABLE . '
		WHERE ' . $db->sql_in_set('session_user_id', $id_cache) . '
		GROUP BY session_user_id';
	$result = $db->sql_query($sql);

	$update_time = $config['load_online_time'] * 60;
	while ($row = $db->sql_fetchrow($result))
	{
		$user_cache[$row['session_user_id']]['online'] = (time() - $update_time < $row['online_time'] && (($row['viewonline']) || $auth->acl_get('u_viewonline'))) ? true : false;
	}
	$db->sql_freeresult($result);
}
unset($id_cache);
Здесь $id_cache - массив идентификаторов пользователей, онлайн-информацию по которым нужно вывести.
Изображение
Аватара пользователя
AllFuns
phpBB 1.4.0
Сообщения: 39
Стаж: 14 лет 10 месяцев
Откуда: Иваново

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

Сообщение AllFuns »

Прошу прощения.Хотелось бы уточнить:
Значит $id_cache это массив с идентификаторами пользователей?Получается что я должен присваивать ему эти идентификаторы?По умолчанию он пустая?
Если да,то по какому принципу я должен присваивать ей идентификаторы?Мне ведь надо выводить,например,надпись онлайн,рядом с ником пользователя,если он действительно в сети.
Можно ли адаптировать запрос таким образом,чтобы прописать его один раз,например,в файле с функциями,который инклюдится к каждой странице,а уже потом в любом месте сайта делать вывод статуса к нику пользователя?

Добавлено спустя 1 час 31 минуту 51 секунду:
Допустим у меня есть раздел,где пользователи оставили свои сообщения.В записях имеется id пользователя $ro['user_id']
Значит мой запрос должен быть :

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

$id_cache=$ro['user_id'];
   // Generate online information for user
if ($config['load_onlinetrack'] && sizeof($id_cache))
{
   $sql = 'SELECT session_user_id, MAX(session_time) as online_time, MIN(session_viewonline) AS viewonline
      FROM ' . SESSIONS_TABLE . '
      WHERE ' . $db->sql_in_set('session_user_id', $id_cache) . '
      GROUP BY session_user_id';
   $result = $db->sql_query($sql);

   $update_time = $config['load_online_time'] * 60;
   while ($row = $db->sql_fetchrow($result))
   {
      $user_cache[$row['session_user_id']]['online'] = (time() - $update_time < $row['online_time'] && (($row['viewonline']) || $auth->acl_get('u_viewonline'))) ? true : false;
   }
   $db->sql_freeresult($result);
}
unset($id_cache);
Я так понял?
И как мне выводить статус?Я имею ввиду надпись или картинку,не суть.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16371
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1745 раз

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

Сообщение rxu »

Вы для самого пользователя это показывать будете, или для других тоже?
Отбирайте, напрмиер, все записи в таблице сессий за определенное время, в течение которого вы считаете пользователя находящимся в сети. В данном случае это время

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

session_time > (time() - $update_time)
Либо массив $id_cache заполняйте всеми существующими идентификаторами пользователей.
Изображение
Аватара пользователя
AllFuns
phpBB 1.4.0
Сообщения: 39
Стаж: 14 лет 10 месяцев
Откуда: Иваново

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

Сообщение AllFuns »

Мне надо отобразить для всех пользователей,кто посетил страницу,статус пользователя,написавшего коммент,чтобы знать,в сети он сейчас или нет.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16371
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1745 раз

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

Сообщение rxu »

Тогда заполняйте массив $id_cache списком идентификаторов авторов комментов, и выполняйте приведенный выше код.
Изображение
Аватара пользователя
AllFuns
phpBB 1.4.0
Сообщения: 39
Стаж: 14 лет 10 месяцев
Откуда: Иваново

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

Сообщение AllFuns »

Я попытался сделать это более понятным для меня:

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

$update_time = $config['load_online_time'] * 60;
$session_time = time() - $update_time;
$st_on = @mysql_query("select * from `phpbb_sessions` where `session_user_id`='".d_clean($ro['user_id'])."' and `session_time`='".d_clean($session_time)."'");
if (mysql_affected_rows() == 0) {$status='OFFLINE';}else{$status='ONLINE';}
Но так ли я понял?Просто у меня все равно пишет OFFLINE,хотя я в сети.

Добавлено спустя 9 минут 32 секунды:
Видимо надо вот здесь переделать

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

and `session_time`='".d_clean($session_time)."'
заменить на

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

and `session_time`>='".d_clean($session_time)."'
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16371
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1745 раз

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

Сообщение rxu »

AllFuns писал(а):and `session_time`='".d_clean($session_time)
Вероятность такого события практически равна нулю. Попробуйте

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

and `session_time`>'".d_clean($session_time)
Изображение
Аватара пользователя
AllFuns
phpBB 1.4.0
Сообщения: 39
Стаж: 14 лет 10 месяцев
Откуда: Иваново

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

Сообщение AllFuns »

Спасибо.Изменил...Так по крайней мере,где мои записи отображает статус онлайн.Позже проверю на других пользователях.Спасибо.
takoy
phpBB 1.0.0
Сообщения: 1
Стаж: 14 лет 2 месяца

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

Сообщение takoy »

Добрый день.
Мне необходимо интегрировать форум, в некую самописную кмс (далее кмс).
Для этого я сделал таблицы phpbb_users, phpbb_sessions общими.
Но регистрация, авторизация, активация должна происходить по средствам кмс.
При регистрации нового пользователя я заношу данные в таблицу phpbb_users,
далее авторизируюсь на сайте, перехожу на форум, там я тоже авторизован.
Но вместо форумов надпись «На этом сайте нет форумов.» ответ как я понимаю кроется в этих полях (user_permissions, user_perm_from ).
Я задаю права на группу но это не помогает, а помогает только задавание ролей каждого юзера на каждую ветку, но это не выход.
Так же есть задача автоматического добавления тем на форуме из кмс.
Я делаю запись в таблице phpbb_topics добаляеться тема, но когда в нее захожу надпись «Запрошенной темы не существует»
Пожалуйста помогите разобраться
RamireZ
phpBB 1.0.0
Сообщения: 2
Стаж: 14 лет 1 месяц

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

Сообщение RamireZ »

Здравствуйте.
Пишу небольшой скрипт по интеграции форума в рукописный сайт. У меня есть файл login.php.

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

<?
$user=$_SESSION['user'];
$pass=$_SESSION['pass'];
//подключаемся к базе данных
$link=mysql_connect($DBSERVER, $DBUSER, $DBPASS) or die("Ошибка подключения");
mysql_select_db($DB,$link) or die("Не могу выбрать базу данных");
//ищем совпадающее имя
$r=mysql_query("SELECT * FROM `phpbb_users` WHERE username='".$user."'");
$ra=mysql_fetch_array($r);
//был ли зарегестрирован пользователь в БД
if($ra){
	echo "<br>Такой пользователь есть!<br>";
	echo $ra["username"];
}else{//если не зарегенстрирован, добавляем в БД нового пользователя
	echo "<br>Нету!";
$username = $user;
$password = $pass;
$email_address = 'pomenay_email@mail.ru';
$timezone = '+5';
$language = 'ru';
$registration_time = time();
$user_inactive_time = time();
$password =phpbb_hash($password);
$email_hash=phpbb_email_hash($email_adress);
$username_clean = utf8_clean_string($username);
//записываем
$query ="INSERT INTO `phpbb_users`(username,username_clean,user_password,user_pass_convert,user_email,user_email_hash,group_id,user_type,user_timezone,user_regdate) VALUES('".$username."','".$username_clean."','".$password."','0','".$email_address."','".$email_hash."','2','0','5','".time()."')";
mysql_query($query);
}
?>
	<div id="main">
	<form id="login" method="post" action="msforum/ucp.php?mode=login">
      <input type="hidden" name="username" value="<?php print $user;?>"/>
      <input type="hidden"name="password" value="<?php print $pass;?>"/>
      <input type="hidden" value="index.php" name="redirect"/>
      <input type="submit" id="forum" value="Sign In" name="login"/>
	</form>
	</div>
</body>
</html>
Если пользователь есть в базе, он нажимает на кнопку "Войти" и попадает на форум. Если же такого пользователя нет в базе, я добавляю в базу users, после чего так же он входит на сайт.
функции phpbb, типа phpbb_hash инклудятся выше.
Суть проблемы: скажите где я накосячил, если при вводе имени на английском маленькими - ramirez, он нормально регистрирует и авторизует, а при вводе с использованием заглавных - RamireZ, или русских имен - Рамирез, рамирез, не входит на сайт - выдает ошибку что мол ввели имя неправильно.
Если регистрироваться стандартными средставами PHPBB3 - все нормально, через мой скрипт авторизует.
Проверял на имена из базы, выводил пользователя - имена сохранены нормально, пароли тоже. Средствами phpbb зарегестрированные моим скриптом польлзователи так же могут войти на сайт.
Перенесено из форума FAQ (phpBB 3.0.x) в форум FAQ 28.09.2016 15:02 модератором rxu

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