Как вывисти авторизацию на другие страницы сайта - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

Правила раздела

Здесь обсуждаются вопросы по настройке и администрированию форумов IPB 3.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 2.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

api

  • 4 Страниц +
  • 1
  • 2
  • 3
  • Последняя »

Как вывисти авторизацию на другие страницы сайта

#1 Пользователь не на сайте   rad1k ответил: »

 
 
  • Newbie
  • *
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 5
  • Регистрация: 25-Октябрь 10
  • Репутация: 0
  • IPB version:3.0.x
 

Отправлено 20 Ноябрь 2010 - 16:56

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

#2 Пользователь не на сайте   Ritsuka ответил: »

 
 
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 908
  • Регистрация: 08-Июнь 09
  • Репутация: 530
  • IPB version:3.4.x
 

Отправлено 21 Ноябрь 2010 - 11:11

Положите такое содержимое как файл /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.ibreso...post__p__370875
3

#3 Пользователь не на сайте   Bard ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 79
  • Регистрация: 04-Февраль 08
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 17 Январь 2011 - 16:11

А для версии 2.2.2 можно это адаптировать?
Или это совсем устаревшая версия и непременно надо на 3 переходить?
0

#4 Пользователь не на сайте   Ph-A ответил: »

 
 
  • Advanced
  • Смотреть блог
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 5 558
  • Регистрация: 18-Сентябрь 06
  • Репутация: 382
  • Откуда:Moscow
  • IPB version:3.1.x
 

Отправлено 17 Январь 2011 - 17:19

Просмотреть сообщениеBard 17 Январь 2011 - 16:11 сказал(а):

А для версии 2.2.2 можно это адаптировать?

Нет

Просмотреть сообщениеBard 17 Январь 2011 - 16:11 сказал(а):

Или это совсем устаревшая версия и непременно надо на 3 переходить?

Для 2.2 есть свои решения, только их надо искать. А перейти как минимум на 2.3.6 стоит.
0

#5 Пользователь не на сайте   proFox ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 19
  • Регистрация: 08-Март 11
  • Репутация: 0
  • IPB version:3.1.x
 

Отправлено 23 Июнь 2011 - 22:31

Цитата

Положите такое содержимое как файл /admin/api/member/api_member_login.php

Куда положить то?

Насчёт остальных 3 кусков. С ними то что делать? куда пихать?

Цитата

Не уверен, что авторизация будет работать с 3.1.3+.


Вложение  2011-06-23_232011.jpg (100,47К)
Количество загрузок: 23

Вам не кажется, что тут нет папки member и соответственно вся цепочка к файлу api_member_login.php рушится. Где он лежит у 3.1.4?
0

#6 Пользователь не на сайте   Haktar ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 611
  • Регистрация: 14-Июнь 09
  • Репутация: 14
  • IPB version:3.1.x
 

Отправлено 24 Июнь 2011 - 03:16

Просмотреть сообщениеRitsuka сказал(а):

Теперь на вашем сайте вы можете выводить информацию:

Просмотреть сообщениеRitsuka сказал(а):

Авторизовывать пользователей:

Просмотреть сообщениеRitsuka сказал(а):

И деавторизовывать:

А куда это всё прописать?
0

#7 Пользователь не на сайте   Ritsuka ответил: »

 
 
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 908
  • Регистрация: 08-Июнь 09
  • Репутация: 530
  • IPB version:3.4.x
 

Отправлено 24 Июнь 2011 - 08:06

Просмотреть сообщениеproFox сказал(а):

Вам не кажется, что тут нет папки member и соответственно вся цепочка к файлу api_member_login.php рушится.

Так создайте.

Просмотреть сообщениеHaktar сказал(а):

А куда это всё прописать?

В собственных php-скриптах вашей CMS, наверное? Если вам нужно какое-то готовое решение - смотрите в сторону пакетов по типу ipbwi или ip.converge. А это так, снипеты для php-разработчиков :)
0

#8 Пользователь не на сайте   Haktar ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 611
  • Регистрация: 14-Июнь 09
  • Репутация: 14
  • IPB version:3.1.x
 

Отправлено 24 Июнь 2011 - 14:57

Просмотреть сообщениеRitsuka сказал(а):

А это так, снипеты для php-разработчиков

А собственно это и нужно :)

На саб-домене есть форум на ipb 1.3. Хотелось чтоб была авторизация с основного форума на саб-домен :)

Просто никогда с таким не сталкивался (не было нужды в этом) поэтому туплю :)
0

#9 Пользователь не на сайте   proFox ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 19
  • Регистрация: 08-Март 11
  • Репутация: 0
  • IPB version:3.1.x
 

Отправлено 24 Июнь 2011 - 16:40

Первый файл создал. Локалка, денвер.

Вот мой первый кусок:
<?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);
?>    

Вставив его - блок пустой... Что не так?

Сообщение изменено: proFox (24 Июнь 2011 - 16:41)

0

#10 Пользователь не на сайте   Ph-A ответил: »

 
 
  • Advanced
  • Смотреть блог
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 5 558
  • Регистрация: 18-Сентябрь 06
  • Репутация: 382
  • Откуда:Moscow
  • IPB version:3.1.x
 

Отправлено 24 Июнь 2011 - 17:00

Просмотреть сообщениеproFox сказал(а):

'/forum/'

Это путь? А не имя диска:/home/и так далее
0

#11 Пользователь не на сайте   proFox ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 19
  • Регистрация: 08-Март 11
  • Репутация: 0
  • IPB version:3.1.x
 

Отправлено 24 Июнь 2011 - 17:41

Изменений ноль:

<?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);
?>       

0

#12 Пользователь не на сайте   proFox ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 19
  • Регистрация: 08-Март 11
  • Репутация: 0
  • IPB version:3.1.x
 

Отправлено 24 Июнь 2011 - 20:07

Он подключается, точно. Но не доводит что-то... У меня после блока авторизации есть и ещё блоки, но сам блок пустой, сужен, а остальные исчезли...
0

#13 Пользователь не на сайте   proFox ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 19
  • Регистрация: 08-Март 11
  • Репутация: 0
  • IPB version:3.1.x
 

Отправлено 24 Июнь 2011 - 22:55

Блин, помогите. Эти три куска что тупо в блок нужно всунуть? Я сделал так, вот код целиком моего блока:

<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>


Или этот пхп код нужно использовать как обработчик формы авторизации. Тут нет ничего, где инструкция?
0

#14 Пользователь не на сайте   Ph-A ответил: »

 
 
  • Advanced
  • Смотреть блог
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 5 558
  • Регистрация: 18-Сентябрь 06
  • Репутация: 382
  • Откуда:Moscow
  • IPB version:3.1.x
 

Отправлено 25 Июнь 2011 - 13:12

Просмотреть сообщениеproFox сказал(а):

Эти три куска что тупо в блок нужно всунуть?

тупо не надо

Просмотреть сообщениеproFox сказал(а):

Я сделал так, вот код целиком моего блока:

а блог сам по себе?

Просмотреть сообщениеproFox сказал(а):

Тут нет ничего, где инструкция?

Что бы стать писателем, вначале надо изучить азбуку. Здесь аналогично.

Просмотреть сообщениеHaktar сказал(а):

На саб-домене есть форум на ipb 1.3. Хотелось чтоб была авторизация с основного форума на саб-домен

Скорее всего данное решение не пойдет. Про 1.3 нечего не скажу. :(
0

#15 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 244
  • Регистрация: 20-Март 09
  • Репутация: 2 060
  • IPB version:3.1.x
 

Отправлено 25 Июнь 2011 - 17:12

Цитата

Блин, помогите. Эти три куска что тупо в блок нужно всунуть?

Да, и так же будет работать.

Цитата

Тут нет ничего, где инструкция?

Какая инструкция, это расширенный класс базового 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);
?>

1

Сообщить об этой теме:


  • 4 Страниц +
  • 1
  • 2
  • 3
  • Последняя »


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна