Интеграция с сайтом

Ответы на вопросы, связанные с модами для phpBB 2.0.x, кроме относящихся к форуму Для авторов (phpBB 2.0.x).
Аватара пользователя
hom9k
phpBB 1.2.0
Сообщения: 17
Стаж: 19 лет 10 месяцев

Интеграция с сайтом

Сообщение hom9k »

Значит так. Вот нашел я тут у вас на сайте скрипты, чтобы можно было интегрировать форум и сайт.
Решил создать по этому поводу отдельную тему, потому что думаю, что многие этим могут заинтересоваться. Человек, который создавал эту тему задавал вопрос: "Как сделать, чтобы при залогинивании сайта все сообщения в форуме не помечались, как прочитанные?". На этот вопрос, к сожалению, исчерпывающего ответа получено не было. Но из-за этой фигни появляется еще одна бага: не работает подписка на темы.
Можно узнать, как это лучше и проще реализовать?
Один вариант был предложен: ввести еще одну дату (дату захода на сайт). Или может можно просто взять login.php, скопировать его например login_site.php и там вообще убрать параметр который отвечает за время входа.
Подскажите, пожалуйста.
Вот сам сайт: http://biketrials.ru

А вот эти два скрипта, которые я использую.
Кстати потом еще есть идея переписать все это дело через http_request.
у меня такая проблема, хочу сделать что бы логин на сайте брался с форума, т.е. у меня на главной странице есть поля для ввода логина и пароля, чекбокс запомнить пароль и кнопочка вход , логин и пас должны обрабатываться login.php форума и возвращать меня потом на главную страницу сайта а не форума. регистрацию я таким образом уже сделал, а вот с входом пока не разобрался... может кто нить подскажет, идеи какие нить?


Кстати, Kelkos, будет желание обсудить этот вопрос стукни в асю 170-939-907, я в инвизе, так что стучи

Вернуться к началу


На самом деле вопрос куда шире, чем он может показаться на первый взгляд.
Возникают такие ситуации:

1 - пользователь уже зарегинен и просто вышел на сайт с форума.
2 - пользователь зарегинен был ранее и его данные прописанны в куках.
3 - пользователь гость вышел на сайт с форума
4 - пользователь гость пока ещё не входил на форум
5 - для форумного скрипта "Кто на сайте" будет совсем не понятна страница, которую сейчас просматривают пользователи.
----------------
Возможные решения:
1 - писать самому обработчик форумных сессий и регистрации
2 - использовать форумные классы регистрации.
3 - помудрить с файлом index.php в форуме.. хех..
----------------
вариант 3 самый простой.. но тут возникае пара вопросов.. лана.. попробую чтонить сделать а там посмотрим.

--------------------------------------------------------------------------------

тут еще понимаешь в чем дело, одногрупник мой эту фигню реализовал, тока вот в чем траблы то:
во первых, реализация такая же как на форуме, т.е. если зарегался, то кусками страница погружается из тэмплэйтов помоему
во вторых, такая реализация мя не устраивает, т.к. мне, грубо говоря, нужно что бы мне возвращалась переменная типа зашел/не зашел, а потом если зашел мона все из сессий читать
с регистрацией было легче, но все равно вечер убил а надо было всего навсего ввести лишнюю переменную для usercp_register.php, чисто для редиректа на главную страницу сайта.
вот хочу тоже самое и с логин пхп сделать... лан, буду думать

--------------------------------------------------------------------------------

Мдя.. задачка не из лёгких.
Вообщем, есть вот такое решение: вызов классов из форума с последующей обработкой результатов.
Замеченные мною баги:
1 - иногда возникает потеря sid форумной сесиий, поэтому на ссылках, после которых она пропадает, надо ставить пхп код (см. ниже)
2 - иногда возникает ошибка при не заданном sid (каждый переход по ссылке без указанногго sid будет создавать новую гостевую сессию).
3 - неправильная отработка редиректа из формы "Вход". Нее.. если пользователь ввёл свои данные сразу правильно, то всё и отрабатывает правильно.. но вот после второй попытки теряются переменные в строке редиректа. И из сообщения о неудачной регистрации нет выхода по редиректу.. т.е. пока пользователь не введёт правильные данные он не попадёт на сайт из этого окна.. И приходится выходить на форум, а только потом на сайт.. Но это уже разрабы форума намудрили, паразиты.
4 - не работает так, как хочется ссылка выход. (по идее пользователь должен выходить на туже страницу на которой нажал "Выход", но разрабы учудили и в итоге редирект при выходе вообще не работает.. поэтому при выходе пользователь попадает к списку форумов.)
5 - размер "съедаемой" скриптом памяти при выполнении увеличился на 10кб.. + увеличилось время отработки (у кого перегруженный хостинг лучше так не делать), ведь приходится инициализировать несколько классов форума, а они грузать всю форумную бодягу в память.. отнимается время на их выполнение и память на загрузку кучи ненужной нам инфы.
----------
Что получилось из плюсов.. Хм..
1 - достаточно просто наладить
2 - мало "самопального" кода, который наверняка работалбы не по тем алгоритмам, что форум.
3 - получение любой инфы по форуму. (системные значения, пользовательские значения, стили и пр. фигня)
И так.
Шаг 1
Создаём файл (не важно где, но по умолчанию в корне сайта) forum_init.php содержащий следующий код:
Код:
<?

define('IN_PHPBB', true); //признак того, что запускался инициализатор
include($phpbb_root_path . 'extension.inc'); //загрузка типа расширения скриптов
include($phpbb_root_path . 'common.'.$phpEx); //загрузка системных переменных и основных классов

//грузим форумный обработчик сессий
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);

//данные по пользователю возвращаются из обработчика в $GLOBALS['userdata']
$user_data=$GLOBALS['userdata'];
$sid=$user_data['session_id']; //номер форумной сессии.

?>

Это наш скрипт инициализации форума. Вся фишка тут в том, что этот скрипт должен инклюдится в нужный скрипт В САМОМ НАЧАЛЕ!. Если перед ним будет хоть что то выведенно пользователю, то он выдаст ошибку и отвалится.
Т.е. если мы сделаем типа так:Код:
<?
$phpbb_root_path = 'forum/'; //путь от выполняемого скрипта в каталог форума (от корня сайта будет forum/)
include ('forum_init.php');
?>
<html>
<head>
<title>Сайт</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
......
текст сайта
......


То он будет работать, но если мы хоть что то напишем перед загрузкой инициализатора (forum_init.php), то получим фигу с маслом. Почему так происходит? хм.. долго объяснять.. (для особо любопытных советую поискать в инете инфу о headers)
Так.. дальше..
Шаг 2
Создаём файл user_window.php тамже где предыдущий файл. Код файла:
Код:
<?
//скрипт в окошко пользователя
//работает с масссивом $user_data который передаётся из forum_init.php
//$phpbb_root_path - каталог форума от корня сайта
//подготаливаем адрес редиректа (редирект будет ../) т.е. на каталог выше форума на скрипт с которого вызвали регистрацию с сохранением
$redirect='..'.$_SERVER['PHP_SELF'];
if ($_SERVER['QUERY_STRING']<>'') $redirect.='?'.$_SERVER['QUERY_STRING'];

if ($user_data['user_id']==-1)
{
//этот пользователь гость.. выводим вариант окошка для гостя
?><form method="post" action="<?=$phpbb_root_path ?>login.php?sid=<?=$sid ?>">
<input name="redirect" type="hidden" value="<?=$redirect ?>">
Имя:<input type="text" name="username" size="10" /><br>
Пароль:<input type="password" name="password" size="10" maxlength="32" /><br>
Автоматически входить при каждом посещении:<input type="checkbox" name="autologin" /><br>
<input type="submit" name="login" value="Вход" /><br>
<a href="/<?=$phpbb_root_path ?>index.php">Вход на форум</a>
</form>
<?
}
else
{
?>
Добро пожаловать <?=$user_data['username'] ?><br>
<?
if ($user_data['user_avatar']<>'')
{
//у пользователя есть аватар
//показываем аватар пользователя. Параметры user_avatar_type и user_avatar
//аватры бывают 2-х типов
// 1 - загруженные на форум в папку /forum/images/avatars/
// 2 - в виде ссылки с другого сайта типа http://othersite.ru/pic.jpg
if ($user_data['user_avatar_type']==1) echo '<img src="/'.$phpbb_root_path.'images/avatars/'.$user_data['user_avatar'].'" border="0" >';
else echo '<img src="'.$user_data['user_avatar'].'" border="0" >';
}
?>
<br>
Ваш последний визит был <?=date ($user_data['user_dateformat'] , $user_data['user_lastvisit']) ?><br>
<a href="/<?=$phpbb_root_path ?>privmsg.php?folder=inbox&sid=<?=$sid ?>">Личные сообщения ( <?=$user_data['user_new_privmsg'] ?> новых )</a><br>
<a href="/<?=$phpbb_root_path ?>login.php?logout=true&sid=<?=$sid ?>">Выход</a><br>
<?
}
?>

Этот файл наша форма для регистрации, а также если пользователь уже зарегинен, то в ней пишется его инфа. Этот файл должен инклюдится в то место сайта,в котором всё это должно быть. Но обязательное условие - в начале скрипта в который инклюдим user_window.php должен вставляться скрипт инициализации (см.выше)

Ну а теперь небольшой пример использования. Создаём файл test.php в котром пишем примерно следующий код:Код:
<?
//тест работы
$phpbb_root_path = 'forum/'; //путь от выполняемого скрипта в каталог форума (от корня сайта будет forum/)
include ('forum_init.php'); //загрузка инициализатора
?>
<table width="100%" border="1">
<tr>
<td width="20%"><? include ('user_window.php'); // выводим рег.форму или инфу пользователя ?></td>
<td width="80%">
<a href="/test.php?f=1">Link1</a><br>
<a href="/test.php?f=2">Link2</a><br>
<a href="/test.php?f=3">Link3</a><br>
</td>
</tr>
</table>

Вот, собственно и всё..
Теперь небольшие замечания:
$phpbb_root_path - это переменная выставляется до скрипта инициализации и означает путь в каталог форума ОТ ВЫПОНЯЕМОГО СКРИПТА (т.е. в который инклюдится наш инициализатор).
$sid - номер сесии пользователя. В некотрых случаях его надо насильно задавать в параметрах ссылок.. иначе он будет теряться. Пример его применения можно иногда видеть на форуме.. к всем ссылкам прилеплен &sid=edfhgu4754j354545vfddfd.. Если у вас вдруг на сайте появилась ссылка, при нажатии на которую пользователь вдруг становится гостем - значит в неё надо прописать что то вроде как в примере
Код:
<a href="/test.php?f=3&sid=<?=$sid ?>">Link</a>

$user_data - содержит ещё много чего интересного.. что бы посмотреть всю инфу по пользователю напишите такой код в конце файла user_window.php:
Код:
<?
echo '<pre>';
print_r ($user_data);
echo '</pre>';
?>

хех.. есть ещё несколько интересных массивов от форума.. все их можно отследить в суперглобальном массиве $GLOBALS ..
Ну вот собственно и всё.

Вернуться к началу


-MS-
Гость





Добавлено: Чт Фев 24, 2005 2:41 pm Заголовок сообщения:

--------------------------------------------------------------------------------

Спасибо большое, буду пробовать, потом обязательно расскажу как работает

Вернуться к началу


-MS-
Гость





Добавлено: Чт Фев 24, 2005 9:25 pm Заголовок сообщения:

--------------------------------------------------------------------------------

Спасибо, все работает
а на счет выхода можно сделать так:
"Выход" ссылается на главную index.php?mode=logout
в конце forum_init.php вставляем код:
$mode=$_GET['mode'];
if ($mode=='logout'){
session_end($userdata['session_id'], $userdata['user_id']);
$redirect='..'.$_SERVER['PHP_SELF'];
Header("Location:$redirect");
exit;
}

Вернуться к началу


Kelkos
Site Admin


Зарегистрирован: 01.11.2004
Сообщения: 13

Добавлено: Чт Фев 24, 2005 10:14 pm Заголовок сообщения:

--------------------------------------------------------------------------------

Ну вот.. самиже можете.. когда хочете. Но по идее редирект должен обрабатываться в скрипте login.php.. но чую я, что всё это "в следующей серии"..
С приведённым тобой скриптом можно ещё поработать прилепив туда доп.переменую для редлиректа на нужную страницу..
Код:
"Выход" ссылается на главную index.php?mode=logout&redirect=<?=$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'] ?>


Всё это нужно чтобы не терять раметры страници при выходе. Если адрес страницы примерно такого вида page.php?a=3&f=3
Код:
$mode=$_GET['mode'];
if ($mode=='logout'){
session_end($userdata['session_id'], $userdata['user_id']);
$redirect=$_GET['redirect'];
if ($redirect=='') $redirect=$_SERVER['PHP_SELF'];
Header("Location:$redirect");
exit;
}

хех. то, что написал не тестил.. но авось заработает..
http://www.biketrials.ru - первый сайт по велотриалу в России!
Аватара пользователя
Colored
phpBB 1.2.0
Сообщения: 14
Стаж: 19 лет 11 месяцев

Сообщение Colored »

а сколько могла бы стоить интеграция бывшей мамбы, нынешней jooml'ы с phpbb ? :roll:

Добавлено спустя 2 часа 41 минуту 2 секунды:

Что никто не смог бы взяться за такую работу?
Аватара пользователя
Mr. Anderson
phpBB Guru
phpBB Guru
Сообщения: 7522
Стаж: 21 год 1 месяц
Откуда: СССР
Благодарил (а): 4 раза
Поблагодарили: 94 раза

Сообщение Mr. Anderson »

Colored
Я что-то путаю или тема несколько не про то? Более того - тема про интеграцию mambo у нас уже есть. Или что такое поиск вы не знаете? :evil:
Аватара пользователя
Colored
phpBB 1.2.0
Сообщения: 14
Стаж: 19 лет 11 месяцев

Сообщение Colored »

Прекрасно знаю, что такое поиск и постоянно натыкаюсь на ответы подобные Вашему.

Удалите мои посты в этой теме и дело с концом. :twisted:
Аватара пользователя
Mr. Anderson
phpBB Guru
phpBB Guru
Сообщения: 7522
Стаж: 21 год 1 месяц
Откуда: СССР
Благодарил (а): 4 раза
Поблагодарили: 94 раза

Сообщение Mr. Anderson »

Colored
Это в смысле, что поиск ничего не дал?
Тогда ЭТО что такое? :?
Аватара пользователя
[R: R@m$e$ :U]
phpBB Maniac
Сообщения: 1464
Стаж: 20 лет 3 месяца
Откуда: Novosibirsk,RU

Сообщение [R: R@m$e$ :U] »

Colored
а сколько готов заплатить? и в чем разница мамбы и твоего движка?
Руководство пользователя | FAQ | Правила | Как устанавливать MOD'ы
ВОСПОЛЬЗУЙСЯ ПОИСКОМ, ТАМ ЕСТЬ БОЛЬШИНСТВО ОТВЕТОВ
ЕСЛИ НЕ ПОМОГЛО, ИСПОЛЬЗУЙ ШАБЛОН ЗАПРОСА, ПОМОГИ В РЕШЕНИИ ЗАДАЧИ
БЕСПЛАТНО ПОМОГУ ТОЛЬКО НА ФОРУМЕ!!! (ЛС НЕ В СЧЕТ)

Оставь благодарность, подтверди работоспособность совета.

ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y
Аватара пользователя
Colored
phpBB 1.2.0
Сообщения: 14
Стаж: 19 лет 11 месяцев

Сообщение Colored »

цену называете вы сами, а мы думаем
работа желательно осуществлять по договору, чтобы все было оговорено в нем и соответственно подход к работе должен быть ответственный со всех сторон (и с вашей и с нашей)

Нужен профессиональный человек, работа сейчас не горит , поэтому я буду искать добросовестного, профессионального человека в том числе и для дальнейшего сотрудничества.

В конкретной ситуации движок - это самая обычная мамба, просто насколько я слышала ее переименовали в joomla
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 20 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

Colored и [R: R@m$e$ :U]
Правила конференции
Пункты 1.5, 3.7, 4.5.
Просто напомнил. Обратите внимание на 1.5 и 4.5, пожалуйста.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
Colored
phpBB 1.2.0
Сообщения: 14
Стаж: 19 лет 11 месяцев

Сообщение Colored »

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

3.7 рекламы ноль, коммерция для кого? то что работодатель может придти на какой-либо форум это только плюс форуму, либо сделайте отдельный раздел для объявлений о работе и т.п.

4.5 с кем общаться в личке я еще не знаю, рассылать всем участникам форума письма, сами понимаете смысла не имеет и времени не хватит

Mr. Anderson спасибо за ссылку, но честно говоря лично я, сама ставить модуль не решусь, поэтому была поднята тема с обобщенным названием по интеграции сайта с форумом, за отсутствием раздела о поиске специалистов. Если это вообще все не по адресу скажите, буду искать что-то еще.

И не надо так болезненно реагировать на повторяющиеся вопросы и чуть-чуть не в той теме, это все мелочи жизни, спокойнЕе относитесь к этому, у вас очень хороший толковый форум.
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 20 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

Colored
1.5 Ваш интерес в поиске работника более чем не долговечен.
3.7 Читайте не только первое слово предложения пожалуйста.
4.5 Зачем мне ваша переписка с [R: R@m$e$ :U]?
я люблю daft punk | новый sugoi.ru
Аватара пользователя
Colored
phpBB 1.2.0
Сообщения: 14
Стаж: 19 лет 11 месяцев

Сообщение Colored »

Мы явно друг друга не понимаем.

Мои сообщения адресованы эээ к сообществу, если можно так сказать.
Кто откликнется на условия, с теми и буду переписываться , а нет так буду искать.

А зачем вам переписка сообщества между друг-другом, если уж вы так называете общение на форуме?

3.7 что надо в данном случае согласовывать с администрацией?
ситуация: вы сразу в предыдущем посте не могли этого прояснить, а вынуждаете меня продолжать дискусию в "ненужной для вас теме" ?

"поиск работника" иногда длится дольше шести месяцев, потому как я ищу человека для дальнейшего сотрудничества.

Вернуться в «Поддержка модов для phpBB 2.0.x»