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

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

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

Но она работает только если находится либо в корневом, либо непосредственно в /forum/. Это решаемо? (пишет страница не найдена)

define('IPS_ENFORCE_ACCESS', true); перед подключением api

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


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

В 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 авторизации, а было как у нормальных людей. Ну, можете юзать и такой способ.

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


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

Подниму тему т.к. схожий вопрос, делаю форум с нуля, версия не так важна, поставил как локалхост 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;
?>

  • Upvote 1

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


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

Сделал, что то не пойму, после нажатия "войти" открывается 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

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


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

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

  • Upvote 1

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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