Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
rad1k

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

Recommended Posts

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

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

Share this post


Link to post
Share on other sites

В 3.4 в api

$this->request['username']

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

 

$this->request['password']

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

@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;
}

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

в самом апи надо поменять две строчки в функции 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" );

Share this post


Link to post
Share on other sites

* $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, куки будут устанавливаться на весь домен.

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
да и меня висит 10 разных поддоменов и для половины нужны свои куки

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

  • Upvote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...