Integruję stronę z forum. W poprzedniej wersji korzystałem z ipbwi - póki co nie obsługuje jeszcze ipb3.0
Poprzednio miałem to tak zrobione: w nagłówku swojej strony dałem swój formularz logowania i wywaliłem formularz logowania z forum.
W kodzie php sprawdzałem czy użytkownik jest zalogowany na forum.
Jeżeli ktoś się logował to własną funkcją wywoływałem funkcję odpowiedzialną za logowanie na forum i później znów sprawdzałem czy jest zalogowany na forum - tym sposobem korzystałem tylko z sesji i ciasteczek z forum ipb - nie musiałem martwić się że użytkownik będzie np zalogowany na forum, ale nie u mnie.
W nowej wersji forum mam już logowanie () ale nie wiem jak sprawdzić czy użytkownik jest zalogowany.
Jest pewno za to odpowiedzialna zmienna member w klasie han_login, ale jest ona protected więc nie mam do niej dostępu.
Jak wyciągnąć tą informację?
Jeżeli chodzi o wylogowanie to pewno za to jest odpowiedzialna funkcja logoutCallback(), tak?
Edit:
Jednak nawet logowanie nie działa. Loguje ale nie pamięta o ty i np jak się zaloguję na stronie i wejdę na forum to o tym nie wie :|
Mój kod php
<?php
require_once('config.inc.php');
class IPBWI {
public $login;
public function __construct() {
global $config;
//-----------------------------------------
// Edit this: path to the forum directory
//-----------------------------------------
$forum_path = 'forum/';
//echo $forum_path;
/**
* We will change directories so that proper directory is picked up
*/
chdir( $forum_path );
/**
* Get some basic IPB files
*/
$forum_path='';
define( 'IPB_THIS_SCRIPT', 'public' );
require_once( $forum_path . 'initdata.php' );
/**
* Get IPB registry
*/
require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' );
$this->ipbRegistry = ipsRegistry::instance();
$this->ipbRegistry->init();
/**
* Get login handler
*/
require_once( IPS_ROOT_PATH . 'sources/handlers/han_login.php' );
$this->login = new han_login( $this->ipbRegistry );
$this->login->init();
chdir("../");
//echo $this->ipbRegistry->member;
}
public function isLoggedIn() {
//print_pre($this->login->member_data);
if ($this->login->member_data['member_id']) return true;
else return false;
}
public function login($email,$password) {
if( $this->login->loginAuthenticate( $email, $email, $password ) ) {
//print_r($this->login->member_data);
return true;
} else {
return false;
}
}
public function logout() {
$this->login->logoutCallback();
}
}
?>
Edit2:
Z logowaniem poradziłem sobie w inny sposób - zmieniłem formularz na taki z parametrami z forum...
Teraz został problem tylko z wykrywaniem czy uzytkownik jest zalogowany w danym momencie czy nie...
Jakieś pomysły?