Как мне выйти из 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
тоже.