PDA

Просмотр полной версии : Общая авторизация у сайта и форума


blaga
01.08.2007, 11:13
Встала такая проблема как общая авторизация на сайте и на форуме. Сайт у меня самописный, форум phpBB. Пытался разобраться в ббшном коде, но ничего не понимаю у них (. Есть у кого нить идеи на этот счет? Возможно что у кого нибудь есть опыт в подобных делах. PHP знаю на среднем уровне. Поиск по инету не помог. Спасибо всем заранее.

Raz0r
01.08.2007, 11:26
Ну, теперь нужно решить - будешь пользоваться либо базой пользователей форума, либо сайта. это нужно решать сразу. Далее нужно передалать саму таблицу юзверов под оба скрипта. Какие именно проблемы возникли?

blackybr
01.08.2007, 11:39
переделай авторизацию похпбб-шную (это проблем не составит) и в каждом скрипте также чекай сессии на валидность, как? можно найти в любом пхпббшном файле.. гдето вначале.. в том же индексе

blaga
01.08.2007, 12:01
хм. а мне казалось что наоборот ббшку не трогать а сайт подстраивать под нее....

n1†R0x
01.08.2007, 12:11
Скорее всего, потребуется лишь изменить сам скрипт авторизации на сайте, на форуме и в мускуле имхо ничего править не придется..

по поводу поста blackybr'а
define("IN_LOGIN", true);

define('IN_PHPBB', true);

также обрати внимание на login.php
конкретно, на механизм создания сессий
еще конкретнее - не помню, дистрибутива нет.. в скрипте есть строка, где указано действие при условии (хэш вводимого пасса = хэшу пасса из мускула И юзер_активный), равном труе.

Zitt
01.08.2007, 12:31
Если поможет.. Есть движок joomla и к нему есть типа мода - объединение с phpbb.. глянь мож оттуда возьмёш...

Raz0r
01.08.2007, 12:35
ну, переделаете авторизацию, и что дальше? Имеется ввиду, что на сайте и на форуме необходимы одинковые аккаунты - в нашем случае он должен быть один, но юзаться он должен обоими скриптами. Т.е. в одном из мест нужно отрубать свою таблицу и брать инфу из таблицы другого скрипта, тут уж как лучше - думать нужно самому. никто не мешает добавить в таблицу пхпбб пару строк, которые у тебя есть на сайте и все будет пучком, или делать своего рода "мост" между таблицами, т.е. чтобы данные менялись в обоих таблицах (и на сайте и на форуме), что тоже вариант, это даже лучше, т.к. меньше проблем будет с паролем (разница в криптовании пароля).

drmist
01.08.2007, 12:35
Берете PhpMyAdmin и смотрите структуру таблицы users в phpBB - так проще, чем в коде копаться.

n1†R0x
01.08.2007, 12:47
ну, переделаете авторизацию, и что дальше? Имеется ввиду, что на сайте и на форуме необходимы одинковые аккаунты - в нашем случае он должен быть один, но юзаться он должен обоими скриптами. Т.е. в одном из мест нужно отрубать свою таблицу и брать инфу из таблицы другого скрипта, тут уж как лучше - думать нужно самому. никто не мешает добавить в таблицу пхпбб пару строк, которые у тебя есть на сайте и все будет пучком, или делать своего рода "мост" между таблицами, т.е. чтобы данные менялись в обоих таблицах (и на сайте и на форуме), что тоже вариант, это даже лучше, т.к. меньше проблем будет с паролем (разница в криптовании пароля).
зачем такие сложности? мосты и пр.

просто написать авторизацию на пхп для сайта вроде форумной, будет использоваться лишь форумная таблица users... Какие-то дополнительные поля добавить можно в конец имхо без проблем, если что.
Нужно лишь понять принцип построения Cookies при авторизации в форуме и принцип создания сессии.

blaga
01.08.2007, 12:48
2n1†R0x, эту проблему я решил. Отрубил нафиг все эти проверки.
То что таблица одна это понятно. Отдельную авторизацию на сайте с использованием ббшной таблицы я смогу сделать. А как сделать так чтобы если залогинился на сайте то на форум уже тоже залогенный заходишь.

halkfild
01.08.2007, 12:48
Берете PhpMyAdmin и смотрите структуру таблицы users в phpBB - так проще, чем в коде копаться.

просто когда пользователь регается и логинится на сайте то данные о авторизации брать с таблици пхпбб..

ну а как там шифруют пасс береш в соурсах регистрации.. вообщем ИМХО проще прикрутить все к пхпбб

blaga
01.08.2007, 12:48
Нужно лишь понять принцип построения Cookies при авторизации в форуме и принцип создания сессии.
вот это я и не могу понять. (

n1†R0x
01.08.2007, 12:52
вот это я и не могу понять. (
короче я сейчас поеду со слипом встречусь =)
вечерком все сделаю, мне кажется, там несложно. состучимся.

.Slip
01.08.2007, 13:44
короче я сейчас поеду со слипом встречусь =)
Ога, если ты ещё вечером после встречи соображать сможешь;)

halkfild
01.08.2007, 15:19
вот статья с сайта пхпбб только англ


Description: Basic tutorial on how to keep sessions going across phpBB and your site
Author: A_Jelly_Doughnut
Date: Sat Oct 04, 2003 6:09 pm
Type: Tutorial
Keywords: login,integration,site
Category: Improvements

The Basics:

Borrow phpBB's session initialization code
Include common.php
Check for authorization [In this Article, just checking for login/logout status (optional)]


Session (and other required) Code:
The following code must be entered into each of the PHP pages for which you want phpBB to do sessions.
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//


Notes:
The value of $phpbb_root_path may change (if required), as may PAGE_INDEX (if wanted). $phpbb_root_path should be a relative directory path to your phpBB page. For example, if you have the following web site directory layout:
/public_html/
../integrated
...../index.php
...../news.php
...../downloads.php
../phpBB2/
...../index.php
...../faq.php
...../memberlist.php


$phpbb_root_path for the /integrated/ directory would be
$phpbb_root_path = '../phpBB2/';


PAGE_INDEX is used in the View Online Page to show the user's location on the forum. It can be any of the values defined in /includes/constants.php under Код:
// Page numbers for session handling



Include Common.php
Done in the above code. This allows for you to use the phpBB DBAL, Templating system, Auth system, login system, and lang system.
Note: If you do this (and it is required), and your board goes down, the rest of your site will go down.

Check for Authorization(optional)
In theory, because we included common.php above we can use phpBB2's built in Authenticication system. We could do this, but it would be a lot of work. For the sake of simplicity, we'll go over how to check if the user is logged in or not, and what to do about it. First, the code to check for login status:
if( $userdata['session_logged_in'] )
{
[insert your HTML/PHP or whatever here]
}
else
{
echo('Please Login');
}


Notes:
You can change the error to whatever you want, even use a $lang variable.

You can also use the message_die() function for the error.

Other Notes

Although not required, it is highly recommended to append_sid() to all links in the pages. It is required that you append_sid() when linking back to the phpBB board itself.
The login HTML would be
<form action="login.php" method="post"><input type="text" name="username"><br /><input type="password" name="password"><br />
<input type="submit" value="login" name="login">
</form>



[edit by wanrecords: the last code example has been slightly editted to include name="login" which is necessary for this to work. big thanks to tcalp for bringing this to our attention.]


(с) phpbb

З.Ы. мона добавить в статьи

Goudini
01.08.2007, 18:03
http://www.php.com.ua/ru/files/scripts/

Сращиваем свой скрипт с системой аутентификации phpbb

n1†R0x
01.08.2007, 19:07
Добавить в статьи можно, если переведешь :)

define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//
в принципе, это как раз то, о чем я упоминал... данный кусок должен находиться в труе-опции условия авторизации юзера.

сейчас слил phpBB - и правда, так и есть, как я и писал.