Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Общая авторизация у сайта и форума (https://forum.antichat.xyz/showthread.php?t=45787)

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

Цитата:

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

зачем такие сложности? мосты и пр.

просто написать авторизацию на пхп для сайта вроде форумной, будет использоваться лишь форумная таблица 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

Цитата:

Сообщение от blaga
вот это я и не могу понять. (

короче я сейчас поеду со слипом встречусь =)
вечерком все сделаю, мне кажется, там несложно. состучимся.

.Slip 01.08.2007 13:44

Цитата:

Сообщение от n1†R0x
короче я сейчас поеду со слипом встречусь =)

Ога, если ты ещё вечером после встречи соображать сможешь;)

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.
PHP код:

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_ipPAGE_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
PHP код:

$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 Код:
PHP код:

// 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:
PHP код:

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
Код HTML:

<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

Добавить в статьи можно, если переведешь :)

PHP код:

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_ipPAGE_INDEX); 
 
init_userprefs($userdata); 
 
// 
 // End session management 
 // 

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

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


Время: 03:43