Делимся секретами создания сайтов

Инициализация на phpBB

Проблема такая: я хочу, чтобы мой php файл (независимы от шаблонов и пр.) определял, вошёл ли человек на форум, или нет. Подскажите, пожалуйста, что необходимо написать, чтобы скрипт это определил. Поскольку PHP-кодер я ещё начинающий, то, покопавшись часик-другой в скриптах форума мало чего понятного для себя откопал, только лишь кусок, в котором, насколько я понял, и происходит дейтвие в зависимости от того, вошёл ли юзер.

<?php if (! $this->_rootref['S_IS_BOT']) {?><a href="<?php echo (isset($this->_rootref['U_LOGIN_LOGOUT'])) ? $this->_rootref['U_LOGIN_LOGOUT'] : ''; ?>"><img src="<?php echo (isset($this->_rootref['T_THEME_PATH'])) ? $this->_rootref['T_THEME_PATH'] : ''; ?>/images/icon_mini_login.gif" width="12" height="13" alt="*" /> <?php echo ((isset($this->_rootref['L_LOGIN_LOGOUT'])) ? $this->_rootref['L_LOGIN_LOGOUT'] : ((isset($user->lang['LOGIN_LOGOUT'])) ? $user->lang['LOGIN_LOGOUT'] : '{ LOGIN_LOGOUT }')); ?></a>&nbsp;<?php } if ($this->_rootref['U_RESTORE_PERMISSIONS']) {?> &nbsp;<a href="<?php echo (isset($this->_rootref['U_RESTORE_PERMISSIONS'])) ? $this->_rootref['U_RESTORE_PERMISSIONS'] : ''; ?>"><img src="<?php echo (isset($this->_rootref['T_THEME_PATH'])) ? $this->_rootref['T_THEME_PATH'] : ''; ?>/images/icon_mini_login.gif" width="12" height="13" alt="*" /> <?php echo ((isset($this->_rootref['L_RESTORE_PERMISSIONS'])) ? $this->_rootref['L_RESTORE_PERMISSIONS'] : ((isset($user->lang['RESTORE_PERMISSIONS'])) ? $user->lang['RESTORE_PERMISSIONS'] : '{ RESTORE_PERMISSIONS }')); ?></a><?php } if ($this->_rootref['S_BOARD_DISABLED'] && $this->_rootref['S_USER_LOGGED_IN']) {?> &nbsp;<span style="color: red;"><?php echo ((isset($this->_rootref['L_BOARD_DISABLED'])) ? $this->_rootref['L_BOARD_DISABLED'] : ((isset($user->lang['BOARD_DISABLED'])) ? $user->lang['BOARD_DISABLED'] : '{ BOARD_DISABLED }')); ?></span><?php } if (! $this->_rootref['S_IS_BOT']) {if ($this->_rootref['S_USER_LOGGED_IN']) {if ($this->_rootref['S_DISPLAY_PM']) {?> &nbsp;<a href="<?php echo (isset($this->_rootref['U_PRIVATEMSGS'])) ? $this->_rootref['U_PRIVATEMSGS'] : ''; ?>"><img src="/images/icon_mini_message.gif" width="12" height="13" alt="*" /> <?php echo (isset($this->_rootref['PRIVATE_MESSAGE_INFO'])) ? $this->_rootref['PRIVATE_MESSAGE_INFO'] : ''; if ($this->_rootref['PRIVATE_MESSAGE_INFO_UNREAD']) {?>, <?php echo (isset($this->_rootref['PRIVATE_MESSAGE_INFO_UNREAD'])) ? $this->_rootref['PRIVATE_MESSAGE_INFO_UNREAD'] : ''; } ?></a><?php } } else if ($this->_rootref['S_REGISTER_ENABLED']) {?> &nbsp;<a href="<?php echo (isset($this->_rootref['U_REGISTER'])) ? $this->_rootref['U_REGISTER'] : ''; ?>"><img src="<?php echo (isset($this->_rootref['T_THEME_PATH'])) ? $this->_rootref['T_THEME_PATH'] : ''; ?>/images/icon_mini_register.gif" width="12" height="13" alt="*" />

Заранее благодарен

Ответы: 18 → “Инициализация на phpBB”

  1. Александр Тарантей Ответить

    подробнее опиши, что тебе надо: определить залогинен или нет??

    p.s. ты скинул скомпиленый шаблон :) немного не то

  2. Арчи Шаги Ответить

    недавно тоже думал над этим, остановился на файле sessions.php в котором содержатся функции, проверяющий создана ли сессия. Сами все сессии хранятся в БД…Попозжа еще гляну, уже дам более точный ответ.

  3. Александр Тарантей Ответить

    там есть переменная в объекте $user, вроде $user->data даже, не помню давно делал Adsense на одном форуме таком

  4. Андрей Petrov Ответить

    #2, Александр,
    Да, именно это и надо определить.
    Насчёт шаблона — ага, там один на другой ссылается, и трудно очень разобраться; что он принимает за $this, например, я не понял.

  5. Дмитрий Шумейко Ответить

    Попробуй в массиве $_SESSION покапать. Посмотри его при и без логина.

  6. Александр Тарантей Ответить

    ну так если залогинен или нет, то там ваще все просто:
    global $user
    if( $user->data['user_id'] == ANONYMOUS ){
    //не авторизован
    } else {
    //авторизован
    }

    • Извените, можно спросить, а где то должлжно бить соеденинея к базе даних, или как? от етот “global $user” он откуда берётса?

  7. Андрей Petrov Ответить

    Огромнейшее спасибо, Александр!
    Всё получилось :)

    Остальным тоже спасибо :)

  8. Александр Тарантей Ответить

    всегда пожалуйста. а что ты такое пишешь к форуму??

  9. Арчи Шаги Ответить

    Александр. Дак обычно такая потребость возникает, когда база пользователей для сайта и форума общая. Тогда на сайте можно писать сервисы типа блогов, фотогалереи и привязывать к пользователям с форума.

  10. Александр Тарантей Ответить

    ну это самое простое… помню между субдоменами делал авторизацию ссайта на форум такой, во там то был цирк :) )

  11. Андрей Petrov Ответить

    Ну, да, Арчи прав.
    Но пока на сайте нет ещё пользователей (а на форуме уже есть), и вот, захотелось написать систему зачисления баллов за выложенные на сайт файлы. Поэтому регистрация будет на форуме, а на сайте уже можно будет просто что-нибудь прикрутить, в частности вывод количества баллов и пр.

    А вот ещё вопрос с сессиями, в какой переменной хранится номер текущей сессии? В $user, насколько я понял, хранится только соответствующая таблица…

  12. Александр Тарантей Ответить

    $user это объект
    что значит номер текущей сессии?? зачем??
    Если очешь сделать авторизацию на форуме и создание сессии то могу скинуть функцию авторизации

  13. Арчи Шаги Ответить

    Александр кидайте, будет интересно глянуть. и куда собственно в самом движке она встраивается…

  14. Александр Тарантей Ответить

    что значит куда?? туда где хочешь вызвать.. ил я не так понял вопрос. Вот собственно сами функция(логин и логаут):

    public function bForumLogin($username,$password)
    {
    $this->__requiredConfigFiles();
    global $user,$auth;
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup('ucp');

    $login = array();

    // Check if user has submitted login and password and try to log in
    if($user->data['user_id'] == ANONYMOUS)
    {
    $login = $auth->login($username, $password);
    }

    if((!empty($login) && $login['status'] == LOGIN_SUCCESS) || $user->data['user_id'] != ANONYMOUS)
    {
    if(!empty($login))
    {
    $auth->acl($user->data);
    }
    }

    }

    public function bForumLogout()
    {
    $this->__requiredConfigFiles();
    global $user;
    if($user->data['user_id'] != ANONYMOUS)
    {
    $user->session_kill();
    }
    }
    private function __requiredConfigFiles()
    {
    global $FilePath,$phpbb_root_path,$phpEx;
    if( !defined('IN_PHPBB') ){
    define('IN_PHPBB', true);
    }
    if( !defined('PHPBB_ROOT_PATH') ){
    define('PHPBB_ROOT_PATH', $FilePath.'forum/' );
    }
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    require_once($phpbb_root_path . 'common.' . $phpEx);
    require_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
    require_once($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);
    }

    У меня есть еще создание пользователя и редактирование, короче делал апишку для сайта одного, чтобы связать егосфорумом

  15. Андрей Petrov Ответить

    Александр, чтобы осуществить выход (logout из форума), надо послать переменную со значением текущей сессии, вот и интересует, откуда это значение взять. Пока есть только наитупейшая идея SELECT'ом взять из таблички БД значение сессии. Но наверняка же она уже хранится в каком-то объекте?

  16. Александр Тарантей Ответить

    Чтобы сделать logout нужно вызвать $user->session_kill();

    или я не так понимаю?!

  17. Подскажите пожайлусто как вивести из бази форума пользувателя, у меня не общая база как в етом случие, у меня две бази, одна на сайт вторая на форум, мне надо создать заброс к бази или что, но мне надо добитса такого результата как сдесь

Ответить