Перейти к публикации
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.

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

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

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

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

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

В 3.4 в api

$this->request['username']

заменить на $this->request['ips_username']

 

$this->request['password']

заменить на $this->request['ips_password']

 

я конечно извиняюсь за подъем столь давней темы, но у меня проблема с этим api, на версии 3.4.6 , адаптировал логин, но вот выход не работает , может есть какой-то способ ?

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

Что значит не работает? Как по вашему вам должны помочь, если вы не умеете эффективно сообщать о проблеме? Не работает - тогда обращайтесь к специалистом в соответствующем разделе. Это не настройка на форуме которую включили и она "не работает".

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

@siv1987, прошу прощения, вот более подробное описание проблемы

поставил api , взял ваш код

global $do;
if($_GET['do'] == 'logout')
{
   $ipbMemberLoginApi -> logout();
   echo('<html><head><meta http-equiv="refresh" content="1;url=test_forum.php"></head><body>Выход из системы</body><html>');
   exit;
}

при нажатии на кнопку выхода, страница перезагружается но пользователь остается залогинен

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

Почитайте топик, возможно ваш случай http://ipbskins.ru/forum/topic13324.html

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

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

в том то и дело что php я знаю, а вот разобраться с функциями форума составляет мелкие трудности (

спасибо за ссылку обязательно прочитаю

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

Если вы знаете пхп, попробуйте сделать отладку. Основное предназначение logout это удаление кукисов и конвертации сессии пользователя. Для начала нужно проверить тем же апи если определяется пользователь, если нет - значит есть проблемы с видимостью cookie. Если юзер загрузился то выход тем более должен работать. У вас там объявлена глобальная переменная, значит код отрабатывает внутри какой-то функции. Проверьте переменные, условия и тд.

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

разобрался в проблеме , отпишу в друг кому пригодиться

 

в самом апи надо поменять две строчки в функции logout

c

       IPSCookie::set( "member_id" , "0"  );
       IPSCookie::set( "pass_hash" , "0"  );
       IPSCookie::set( "anonlogin" , "-1" );

на

       IPSCookie::set( "member_id" , "0" , 1 , 0 , FALSE , TRUE );
       IPSCookie::set( "pass_hash" , "0" , 1 , 0 , FALSE , TRUE );
       IPSCookie::set( "anonlogin" , "-1" );

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

* $local        bool        If false, will set a cookie on the entire domain
* $usePrefix    bool        If $local is false, controls if the cookie prefix should be used
*/
static public function set( $name, $value="", $sticky=1, $expires_x_days=0, $local=TRUE, $usePrefix=FALSE )

 

Поддомены? Указать глобальный домен для cookie не пробовали?

 

Если $local false, куки будут устанавливаться на весь домен.
Опубликовано:

ну решение которое я с кинул я вытянул прямо из файла где происходит выход из форума , проверил и все работает

да и меня висит 10 разных поддоменов и для половины нужны свои куки

Опубликовано:
да и меня висит 10 разных поддоменов и для половины нужны свои куки

Логически правильно прописать глобальный домен в настройках cookie (в теме которая указана выше как раз об этом говорится). Это в последних версиях IPS почему-то начали в коде форсировано устанавливать глобальные cookie авторизации, а было как у нормальных людей. Ну, можете юзать и такой способ.

  • 1 год спустя...
Опубликовано:

Подниму тему т.к. схожий вопрос, делаю форум с нуля, версия не так важна, поставил как локалхост 3.4.6, нужно сделать внешнюю страницу авторизации, допустим вот стандартная форма

<form method="post" action="" class="login">

<p>

<label for="login">Логин:</label>

<input type="text" name="login" id="login" value="name@example.com">

</p>

 

<p>

<label for="password">Пароль:</label>

<input type="password" name="password" id="password" value="4815162342">

</p>

 

<p class="login-submit">

<button type="submit" class="login-button">Войти</button>

</p>

 

<p class="forgot-password"><a href="index.html">Забыл пароль?</a></p>

</form>

с ней css'ка еще идет, использовал api_member_login.php с первой страницы но не выходит у меня, нету опыта(

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

Я кладу файл в папку, в форме меняю экшн на путь к файлу, но что дальше не понятно для меня(

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

Если у вас нет опыта и вы не знакомы с программированием вам проще просто отправить форму авторизации с сайта на обработчик форума.

 

<?php

define( 'IPB_THIS_SCRIPT', 'public' );
define( 'IPS_PUBLIC_SCRIPT', 'index.php');
define( 'IPS_ENFORCE_ACCESS', true);
require_once( './forum/initdata.php' );

require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' );
require_once( IPS_ROOT_PATH . 'sources/base/ipsController.php' );

$registry = ipsRegistry::instance();
$registry->init();

$settings   =& $registry->fetchSettings();
$memberData =& $registry->member()->fetchMemberData();

if($memberData['member_id']):
header('Location: '.$settings['board_url'].'/');
exit;
else:
?>

<form method="post" action="<?=$settings['board_url']?>/index.php?app=core&module=global&section=login&do=process" class="login">
<input type="hidden" name="auth_key" value="<?=$registry->member()->form_hash?>"/>
<p>
 <label for="login">Логин:</label>
 <input type="text" name="ips_username" id="ips_username">
</p>
<p>
 <label for="password">Пароль:</label>
 <input type="password" name="ips_password" id="ips_password">
</p>
<p>
 <label for="password">Запомнить:</label>
 <input type="checkbox" id="inline_remember" checked="checked" name="rememberMe" value="1"/>
</p>
<p class="login-submit">
<button type="submit" class="login-button">Войти</button>
</p>
</form>

<?php
endif;
?>

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

Сделал, что то не пойму, после нажатия "войти" открывается Object not found по ссылке

http://localhost/%7B$settings['board_url']%7D/index.php?app=core&module=global&section=login&do=process

форум сразу в корне, я же должен в скрипте заменить board_url на свой путь, в данном случае слеш просто.. даже без слеша

http://localhost/%7B$settings%7D/index.php?app=core&module=global&section=login&do=process
Опубликовано:

Скопируйте еще раз кодю

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

Ну я изменил вверху /initdata.php а борд_урл по разному пробую

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

Сейчас на странице 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.