Проблема такая: я хочу, чтобы мой 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> <?php } if ($this->_rootref['U_RESTORE_PERMISSIONS']) {?> <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']) {?> <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']) {?> <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']) {?> <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="*" />
Заранее благодарен
подробнее опиши, что тебе надо: определить залогинен или нет??
p.s. ты скинул скомпиленый шаблон
немного не то
недавно тоже думал над этим, остановился на файле sessions.php в котором содержатся функции, проверяющий создана ли сессия. Сами все сессии хранятся в БД…Попозжа еще гляну, уже дам более точный ответ.
там есть переменная в объекте $user, вроде $user->data даже, не помню давно делал Adsense на одном форуме таком
#2, Александр,
Да, именно это и надо определить.
Насчёт шаблона — ага, там один на другой ссылается, и трудно очень разобраться; что он принимает за $this, например, я не понял.
Попробуй в массиве $_SESSION покапать. Посмотри его при и без логина.
ну так если залогинен или нет, то там ваще все просто:
global $user
if( $user->data['user_id'] == ANONYMOUS ){
//не авторизован
} else {
//авторизован
}
Извените, можно спросить, а где то должлжно бить соеденинея к базе даних, или как? от етот “global $user” он откуда берётса?
Огромнейшее спасибо, Александр!
Всё получилось
Остальным тоже спасибо
всегда пожалуйста. а что ты такое пишешь к форуму??
Александр. Дак обычно такая потребость возникает, когда база пользователей для сайта и форума общая. Тогда на сайте можно писать сервисы типа блогов, фотогалереи и привязывать к пользователям с форума.
ну это самое простое… помню между субдоменами делал авторизацию ссайта на форум такой, во там то был цирк
)
Ну, да, Арчи прав.
Но пока на сайте нет ещё пользователей (а на форуме уже есть), и вот, захотелось написать систему зачисления баллов за выложенные на сайт файлы. Поэтому регистрация будет на форуме, а на сайте уже можно будет просто что-нибудь прикрутить, в частности вывод количества баллов и пр.
А вот ещё вопрос с сессиями, в какой переменной хранится номер текущей сессии? В $user, насколько я понял, хранится только соответствующая таблица…
$user это объект
что значит номер текущей сессии?? зачем??
Если очешь сделать авторизацию на форуме и создание сессии то могу скинуть функцию авторизации
Александр кидайте, будет интересно глянуть. и куда собственно в самом движке она встраивается…
что значит куда?? туда где хочешь вызвать.. ил я не так понял вопрос. Вот собственно сами функция(логин и логаут):
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);
}
У меня есть еще создание пользователя и редактирование, короче делал апишку для сайта одного, чтобы связать егосфорумом
Александр, чтобы осуществить выход (logout из форума), надо послать переменную со значением текущей сессии, вот и интересует, откуда это значение взять. Пока есть только наитупейшая идея SELECT'ом взять из таблички БД значение сессии. Но наверняка же она уже хранится в каком-то объекте?
Чтобы сделать logout нужно вызвать $user->session_kill();
или я не так понимаю?!
Подскажите пожайлусто как вивести из бази форума пользувателя, у меня не общая база как в етом случие, у меня две бази, одна на сайт вторая на форум, мне надо создать заброс к бази или что, но мне надо добитса такого результата как сдесь