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()销毁会话代码>
如果用户选中了“记住我”,您也必须删除cookiepass\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'];