2014-04-01 11 views
4

메인 사이트와 Invision Power Board 소프트웨어 사이에 사용하기 위해 SSO (Single Sign-On) 시스템을 구축했지만 주 사이트에서 로그 아웃 할 때 IPB 사용자를 로깅하는 방법을 모르겠습니다.외부에서 IPB의 사용자를 어떻게 로그 아웃합니까?

또한이 작업을 수행하려면 외부 파일에 어떤 파일을로드해야합니까? 당신은 사용자가 "저를 기억"경우 session_destroy();

와 세션을 파괴하는 시도 할 수

+0

그들은 같은 도메인에서 호스팅됩니까? – Companjo

+0

@Companjo 예, 포럼은 @'/ forum /'입니다. – Brett

답변

2

편집 : 이것에 대한 IPB 코드를 사용하려면 다음 public_core_global_login을 확장하고 개인적으로, 당신이 I를 $this->member->setMember($member_id); 을 설정해야 작동이에 대한 doLogout() 방법 의 전화

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

을 포함해야 , 이렇게 한 적이 없으므로 수동으로 할 수있는 방법은 다음과 같습니다.

IPB는 세션에서 데이터를 설정하고 자동 로그인을 위해 여러 쿠키를 저장합니다. IPB 소스를 사용하지 않고도 수행 할 수 있습니다.

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); 

당신은 conf_global.php에서 $ ibf_prefix를 읽을 수 있습니다 :

$ibf_prefix = $INFO[sql_tbl_prefix]; 

당신이해야 할 일은 (주 쿼리 및 updatecookie은 DB 쿼리를 수행하고 각각의 쿠키 값을 설정, 일부 pseudofunctions 있습니다)입니다 및 $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_public/global/login.php

doLogout 방법의 소스를 읽을 수 있습니다

IPB API에 대해 알지 못합니다.

+0

고맙습니다. 나는 그것을 시도해야 할 것이다. 그래서'login.php'뿐만 아니라'conf_global.php'도 포함시켜야합니까? 수동으로하면'login.php'도 포함시켜야합니까? 마지막으로, 나는 어떤 종류의 init 파일을로드해야한다고 생각했다. IPB 파일이'initdata.php'라고 생각한다. – Brett

+0

수동으로 수행하는 경우 conf_global.php가 필요하지 않습니다. 로그인을 확장하여 할 경우 initdata.php, sources/base/ipsRegistry.php 및 sources/base/ipsController.php를 포함해야한다고 생각합니다.하지만 전에 말한 적이 없기 때문에 –

+0

방금 ​​전에 이것을 시도해 보면 ...'query_first'가하는 일과 데이터 배열을 어떻게 반환 할까? – Brett

0

당신이 너무 쿠키 pass_hash을 삭제해야 할 체크.

+0

그 해결책은 조금 비좁은 것처럼 보입니다. IPB가 사용자를 로그 아웃하는 것과 동일한 방법을 사용하는 것을 선호합니다. – Brett