Опубликовано: 20 ноября 201015 г Как вывести блок авторизации на другие страницы сайта. К примеру чтобы когда человек заходил на главную он видел вход или регистрацию, а если он зарегистрирован то отображается его профиль, тоже на всех страницах сайта.
Опубликовано: 21 ноября 201015 г Положите такое содержимое как файл /admin/api/member/api_member_login.php: <?php /** * IBResource, LTD; Ritsuka, UnLTD * IP.Board * Member authorization API file * * @author GiV, Ritsuka * @copyright (c) 2010 IBResource, LTD. * @link http://www.ibresource.ru * @version 1.0.0 * */ if ( ! class_exists( 'apiCore' ) ) { require_once( FORUM_PATH . 'admin/api/api_core.php' ); } class apiMemberLogin extends apiCore { private $_handler = NULL; public $path_to_ipb = FORUM_PATH; public function childInit() { require_once( IPS_ROOT_PATH . 'sources/base/ipsController.php' ); require_once( IPS_ROOT_PATH . 'sources/handlers/han_login.php' ); $this->_handler = new han_login( $this->registry ); $this->_handler->init(); } public function login( $username, $password, $remember = TRUE ) { $this->request['username'] = $username; $this->request['password'] = $password; $this->request['rememberMe'] = $remember; return $this->_handler->verifyLogin(); } public function logout() { IPSCookie::set( "member_id" , "0" ); IPSCookie::set( "pass_hash" , "0" ); IPSCookie::set( "anonlogin" , "-1" ); if( is_array( $_COOKIE ) ) { foreach( $_COOKIE as $cookie => $value) { if ( stripos( $cookie, $this->settings['cookie_id'] . 'ipbforumpass' ) !== false ) { IPSCookie::set( $cookie, '-', -1 ); } } } $this->registry->member()->sessionClass()->convertMemberToGuest(); return true; } public function getMember() { return $this->registry->member()->fetchMemberData(); } } Теперь на вашем сайте вы можете выводить информацию: define( 'FORUM_PATH', '/var/www/sites/public_html/forums/'); require_once( FORUM_PATH . 'admin/api/member/api_member_login.php' ); $ipbMemberLoginApi = new apiMemberLogin(); $ipbMemberLoginApi->init(); $member = $ipbMemberLoginApi->getMember(); if($member['member_id']) { echo $member['name']; } unset($ipbMemberLoginApi); Авторизовывать пользователей: define( 'FORUM_PATH', '/var/www/sites/public_html/forums/'); require_once( FORUM_PATH . 'admin/api/member/api_member_login.php' ); $ipbMemberLoginApi = new apiMemberLogin(); $ipbMemberLoginApi->init(); $ipbMemberLoginApi->login( 'user_login', 'user_password' ); unset($ipbMemberLoginApi); И деавторизовывать: define( 'FORUM_PATH', '/var/www/sites/public_html/forums/'); require_once( FORUM_PATH . 'admin/api/member/api_member_login.php' ); $ipbMemberLoginApi = new apiMemberLogin(); $ipbMemberLoginApi->init(); $ipbMemberLoginApi->logout(); unset($ipbMemberLoginApi); Не уверен, что авторизация будет работать с 3.1.3+. Оригинальный скрипт (без инфо о пользователе) тут: http://forums.ibresource.ru/index.php?/topic/61133/page__view__findpost__p__370875
Опубликовано: 17 января 201114 г А для версии 2.2.2 можно это адаптировать?Или это совсем устаревшая версия и непременно надо на 3 переходить?
Опубликовано: 17 января 201114 г А для версии 2.2.2 можно это адаптировать?Нет Или это совсем устаревшая версия и непременно надо на 3 переходить?Для 2.2 есть свои решения, только их надо искать. А перейти как минимум на 2.3.6 стоит.
Опубликовано: 23 июня 201114 г Положите такое содержимое как файл /admin/api/member/api_member_login.phpКуда положить то? Насчёт остальных 3 кусков. С ними то что делать? куда пихать? Не уверен, что авторизация будет работать с 3.1.3+. Вам не кажется, что тут нет папки member и соответственно вся цепочка к файлу api_member_login.php рушится. Где он лежит у 3.1.4?
Опубликовано: 24 июня 201114 г Теперь на вашем сайте вы можете выводить информацию:Авторизовывать пользователей:И деавторизовывать:А куда это всё прописать?
Опубликовано: 24 июня 201114 г Вам не кажется, что тут нет папки member и соответственно вся цепочка к файлу api_member_login.php рушится.Так создайте. А куда это всё прописать? В собственных php-скриптах вашей CMS, наверное? Если вам нужно какое-то готовое решение - смотрите в сторону пакетов по типу ipbwi или ip.converge. А это так, снипеты для php-разработчиков :)
Опубликовано: 24 июня 201114 г А это так, снипеты для php-разработчиковА собственно это и нужно :) На саб-домене есть форум на ipb 1.3. Хотелось чтоб была авторизация с основного форума на саб-домен :) Просто никогда с таким не сталкивался (не было нужды в этом) поэтому туплю :)
Опубликовано: 24 июня 201114 г Первый файл создал. Локалка, денвер. Вот мой первый кусок:<?php define( 'FORUM_PATH', '/forum/'); require_once( FORUM_PATH . 'admin/api/member/api_member_login.php' ); $ipbMemberLoginApi = new apiMemberLogin(); $ipbMemberLoginApi->init(); $member = $ipbMemberLoginApi->getMember(); if($member['member_id']) { echo $member['name']; } unset($ipbMemberLoginApi); ?> Вставив его - блок пустой... Что не так? Изменено 24 июня 201114 г пользователем proFox
Опубликовано: 24 июня 201114 г Изменений ноль: <?php define( 'FORUM_PATH', 'Z:/home/league1.ru/www/forum/'); require_once( FORUM_PATH . 'admin/api/member/api_member_login.php' ); $ipbMemberLoginApi = new apiMemberLogin(); $ipbMemberLoginApi->init(); $member = $ipbMemberLoginApi->getMember(); if($member['member_id']) { echo $member['name']; } unset($ipbMemberLoginApi); ?>
Опубликовано: 24 июня 201114 г Он подключается, точно. Но не доводит что-то... У меня после блока авторизации есть и ещё блоки, но сам блок пустой, сужен, а остальные исчезли...
Опубликовано: 24 июня 201114 г Блин, помогите. Эти три куска что тупо в блок нужно всунуть? Я сделал так, вот код целиком моего блока: <div class="portlet"> <div class="portlet-header">Мини-профиль</div> <div class="portlet-content"> <?php define( 'FORUM_PATH', 'Z:/home/league1.ru/www/forum/'); require_once( FORUM_PATH . 'admin/api/member/api_member_login.php' ); $ipbMemberLoginApi = new apiMemberLogin(); $ipbMemberLoginApi->init(); $member = $ipbMemberLoginApi->getMember(); if($member['member_id']) { echo $member['name']; } unset($ipbMemberLoginApi); $ipbMemberLoginApi->login( 'user_login', 'user_password' ); unset($ipbMemberLoginApi); $ipbMemberLoginApi->logout(); unset($ipbMemberLoginApi); ?> </div> </div> Или этот пхп код нужно использовать как обработчик формы авторизации. Тут нет ничего, где инструкция?
Опубликовано: 25 июня 201114 г Эти три куска что тупо в блок нужно всунуть?тупо не надо Я сделал так, вот код целиком моего блока:а блог сам по себе? Тут нет ничего, где инструкция? Что бы стать писателем, вначале надо изучить азбуку. Здесь аналогично. На саб-домене есть форум на ipb 1.3. Хотелось чтоб была авторизация с основного форума на саб-домен Скорее всего данное решение не пойдет. Про 1.3 нечего не скажу. :(
Опубликовано: 25 июня 201114 г Блин, помогите. Эти три куска что тупо в блок нужно всунуть?Да, и так же будет работать. Тут нет ничего, где инструкция?Какая инструкция, это расширенный класс базового apiCore с несколькими методами, из которых - login -авторизация, logout -выход, getMember -массив пользователя, ну и инициализации контроллера и файла авторизации. Это можно было понять по одному взгляду на класс и его примеров. Если вы здесь видите только разбросанные куски кода то не стоит даже браться. Даже я, не писавший в своей жизни ничего сложнее чем мод sitemap, смог наваять за двадцать минут вот такой простой скрипт <?php //header('Content-type: text/html; charset=utf-8'); define( 'FORUM_PATH', $_SERVER['DOCUMENT_ROOT'].'/forum31/'); require_once( FORUM_PATH . 'admin/api/member/api_member_login.php' ); $apiMember = new apiMemberLogin(); $apiMember->init(); /* Авторизация */ if( $_POST['login'] && $_POST['password'] ) { $login = $_POST['login']; $password = $_POST['password']; $ret = $apiMember->login( $login, $password ); if( $ret[2] ) { if( $ret[2] == 'wrong_auth' ) { echo 'Неверный логин или пароль<br>'; } else { echo 'Ошибка авторизации: {$ret[2]}<br>'; } } else { echo '<html><head><meta http-equiv="refresh" content="2;url=index.php"></head><body>Вы вошли в систему!</body><html>'; exit; } } /* Выход */ if( $_GET['do'] == 'logout' ) { $apiMember->logout(); echo '<html><head><meta http-equiv="refresh" content="2;url=index.php"></head><body>Выход из системы</body><html>'; exit; } $member = $apiMember->getMember(); if($member['member_id']) { //print_r( $member ); echo 'Вы залогены как '.$member['name'].' <a href="index.php?do=logout">Выход</a><br />'; } else { echo 'Вы не авторизированы<br /> <form name="form_login" action="index.php?do=login" method="post"> <input name="login" type="text"><br /> <input name="password" type="password"><br /> <input type="submit" value="Отправить"> </form> '; } unset($apiMember); ?>
Опубликовано: 21 февраля 201213 г Всем доброго времени суток.В php не силен, потому очень сложно разбираться в чужом коде.Данный во втором посте код у меня заработал. Автору огромное спасибо. Остались вопросы:как получить id пользователя?как получить id-группы (основной и всех дополнительных)?как получить имя файла аватара и фотографии? Заранее благодарен.
Как вывести блок авторизации на другие страницы сайта. К примеру чтобы когда человек заходил на главную он видел вход или регистрацию, а если он зарегистрирован то отображается его профиль, тоже на всех страницах сайта.