Как мне выйти из IPB извне?

Я построил SSO (Single Sign-On) Система для использования между нашим основным сайтом и Invision Power Board программное обеспечение, но я не уверен, как идти о выходе пользователя из IPB когда они выходят из основного сайта?

Кроме того, какие файлы мне нужно загрузить во внешний файл, чтобы сделать это?

2 ответа

Решение

Изменить: чтобы использовать для этого код IPB, необходимо включить

require_once( IPS_ROOT_PATH . 'applications/core/modules_public/global/login.php' );

затем продлить public_core_global_login и называть это doLogout() метод, чтобы это работало, вы должны установить $this->member->setMember( $member_id );Лично я никогда не делал это таким образом, поэтому ниже показано, как вы можете сделать это вручную:

IPB устанавливает данные в сеансе и сохраняет несколько файлов cookie для автоматического входа. Вы можете выполнять без использования источников IPB; то, что вам нужно сделать, это (обратите внимание, запрос и updatecookie - это некоторые псевдофункции для выполнения запросов к БД и установки значений cookie соответственно):

  query("DELETE FROM ".$ibf_prefix."sessions WHERE member_id = $userid");

  updatecookie($ibf_cookieid."member_id",0,time()-1800);
  updatecookie($ibf_cookieid."pass_hash",0,time()-1800);
  updatecookie($ibf_cookieid."session_id",0,time()-1800);

Вы можете прочитать $ibf_prefix из conf_global.php:

$ibf_prefix = $INFO[sql_tbl_prefix];

а также $ibf_cookieid является:

$ibf_cache = query_first("SELECT cs_value FROM " . $ibf_prefix . "cache_store WHERE cs_key = 'settings'");
$ibf_cache = unserialize($ibf_cache['cs_value']);

$ibf_cookieid = $ibf_cache['cookie_id'];

Вы можете прочитать источник doLogout метод в admin/applications/core/modules_public/global/login.php

Я не знаю ни одного IPB API для этого.

Вы можете попытаться уничтожить сеанс с session_destroy();

Если пользователь установил флажок "Запомнить меня", необходимо удалить файл cookie. pass_hash тоже.

Другие вопросы по тегам