Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
rad1k

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

Рекомендованные сообщения

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

Поделиться сообщением


Ссылка на сообщение

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

  • Upvote 3

Поделиться сообщением


Ссылка на сообщение

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

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

Поделиться сообщением


Ссылка на сообщение

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

Нет

 

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

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

Поделиться сообщением


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

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

 

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

 

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

 

post-44033-0-93787600-1308857443_thumb.jpg

 

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

Поделиться сообщением


Ссылка на сообщение

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

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

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

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

Поделиться сообщением


Ссылка на сообщение

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение

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

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
06/24/11 13:41 (изменено)

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

 

Вот мой первый кусок:

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

Поделиться сообщением


Ссылка на сообщение

'/forum/'

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

Поделиться сообщением


Ссылка на сообщение

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

 

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

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение

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

тупо не надо

 

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

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

 

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

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

 

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

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

Поделиться сообщением


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

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

 

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

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

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...