Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

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

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

Опубликовано:

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

  • 1 месяц спустя...
Опубликовано:

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

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

Опубликовано:

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

Нет

 

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

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

  • 5 месяцев спустя...
Опубликовано:
Положите такое содержимое как файл /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. Хотелось чтоб была авторизация с основного форума на саб-домен :)

 

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

Опубликовано:

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

 

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

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

  • 7 месяцев спустя...
Опубликовано:

Всем доброго времени суток.

В php не силен, потому очень сложно разбираться в чужом коде.

Данный во втором посте код у меня заработал. Автору огромное спасибо.

 

Остались вопросы:

как получить id пользователя?

как получить id-группы (основной и всех дополнительных)?

как получить имя файла аватара и фотографии?

 

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

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

Сейчас на странице 0

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.