Php 如何从IPB外部注销用户?

Php 如何从IPB外部注销用户?,php,single-sign-on,ipb,invision-power-board,Php,Single Sign On,Ipb,Invision Power Board,我已经建立了一个SSO(单点登录)系统,用于我们的主站点和Invision Power Board软件之间,但我不确定当用户从主站点注销时如何将其注销IPB 此外,我需要在外部文件中加载哪些文件才能执行此操作?您可以尝试使用session\u destroy()销毁会话 如果用户选中了“记住我”,您也必须删除cookiepass\u hash。编辑:要为此使用IPB代码,您必须包括 require_once(IPS_ROOT_PATH.'applications/core/modules_pub

我已经建立了一个
SSO(单点登录)
系统,用于我们的主站点和
Invision Power Board
软件之间,但我不确定当用户从主站点注销时如何将其注销
IPB


此外,我需要在外部文件中加载哪些文件才能执行此操作?

您可以尝试使用
session\u destroy()销毁会话


如果用户选中了“记住我”,您也必须删除cookie
pass\u hash

编辑:要为此使用IPB代码,您必须包括

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

然后扩展
public\u core\u global\u login
并调用它的
doLogout()
方法 要使其工作,您必须设置
$this->member->setMember($member\u id)
一、 就个人而言,我从来没有这样做过,所以下面是如何手动完成的:

IPB在会话中设置数据,并存储多个cookie用于自动登录。您可以在不使用任何IPB源的情况下执行;您需要做的是(注意query和updatecookie是一些伪函数,分别用于执行DB查询和设置cookie值):

您可以从conf_global.php读取$ibf_前缀:

$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'];
您可以在
admin/applications/core/modules\u public/global/login.php


我不知道这方面有任何IPB API。

它们是否托管在同一个域上?@Companjo是的,论坛是@
/forum/
。该解决方案似乎有点特别,希望使用IPB自己注销用户的相同方法。非常感谢。我得试一试。那么我需要包括
conf_global.php
以及
login.php
?如果我手动操作,我还需要包括
login.php
?最后,我认为我需要加载某种init文件-我认为IPB的文件是
initdata.php
?如果手动执行,则不需要conf_global.php以外的任何东西。如果您通过扩展登录名来实现,我相信您必须包括initdata.php、sources/base/ipsRegistry.php和sources/base/ipsController.php,但正如我所说,我以前从未这样做过,我只是想尝试一下。。。。。。想知道
query\u首先做什么以及它如何返回数据数组?@Brett类似:$result=mysql\u query($sql);if($result){return mysql_fetch_array($result);}
$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'];