Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Jedinstven login za phpbb forum i moj sajt!

[es] :: Web aplikacije :: Jedinstven login za phpbb forum i moj sajt!

[ Pregleda: 2287 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

gringoon
BiH

Član broj: 64266
Poruke: 20
80.65.95.*



Profil

icon Jedinstven login za phpbb forum i moj sajt!29.06.2006. u 09:32 - pre 216 meseci
Pozdrav!

Zelim integrisati pbpbb forum sa portalom (powerportal 1.3b) i sve je to ok osim jednog, naime nikako ne mogu da napravim jedinstven login za obje aplikacije (tj kad se neko loguje na portal da bude automatski logovan i na forum)..

Kad je u pitanju registracija clanova to sam rijesio ali ostaje ovaj dio sa logovanjem..

Klasa koja provjerava clanove i loguje ih na portalu izgleda ovako:

Code:

class user_authorization {
    function set_username($user) {
    $this->username = $user;
    $this->username = trim($this->username);
    $this->username = str_replace(' ', '', $this->username);
    }

    function set_password($pass) {
    $this->password = $pass;
    }

    function set_login_cookies($remember) {
        if($remember) {
        setcookie('username', $this->username, time()+60*60*24*30, '/');
        setcookie('password', $this->password, time()+60*60*24*30, '/');
        } else {
        setcookie('username', $this->username, -1, '/');
        setcookie('password', $this->password, -1, '/');
        }
    }

    function validate() {
    global $db;

        if(!empty($this->username) && !empty($this->password)) {
        $user_row = $db->fetch_row("SELECT * FROM users WHERE username = '$this->username' AND password = '$this->password'");

        $username_db = $user_row['username'];
        $password_db = $user_row['password'];

            if(strcasecmp($this->username, $username_db) == 0 && strcasecmp($this->password, $password_db) == 0 && !empty($this->username) && !empty($this->password)) {
            $this->user_id = $user_row['id'];
            $this->logged_in = 1;
            $this->username_format = $user_row['username_format'];

                $row_super_admin = $db->fetch_row("SELECT * FROM groups_users WHERE name = 'Super Administrator' AND user_id = '$this->user_id'");
                if(empty($row_super_admin['0'])) {
                $this->super_admin = 0;

                    $result_admin_mods = $db->query("SELECT * FROM modules_admin ORDER BY module ASC");
                    while($row_admin_mods = $db->fetch_array($result_admin_mods)) {
                    $groups_admin = $db->fetch_row("SELECT groups FROM modules_admin WHERE id = '" . $row_admin_mods['id'] . "'");
                    $groups_admin = $groups_admin['0'];

                    $groups_admin_array = explode(':', $groups_admin); 
                        $x = 0;
                        while(!empty($groups_admin_array[$x])) {
                        $user_groups = $db->fetch_row("SELECT * FROM users WHERE id = '$this->user_id'");
                        $user_groups = $user_groups['groups'];

                        $user_groups_array = explode(':', $user_groups);
                            if(in_array($groups_admin_array[$x], $user_groups_array)) {
                            $this->admin = 1;
                            }
                        $x++;
                        }
                    }

                    if(empty($this->admin)) {
                    $this->admin = 0;
                    }
                } else {
                $this->admin = 1;
                $this->super_admin = 1;
                }

            return 1;
            } else {
            $this->super_admin = 0;
            $this->logged_in = 0;
            $this->user_id = '1';
            $this->admin = 0;

            return 0;
            }
        } else {
        $this->super_admin = 0;
        $this->logged_in = 0;
        $this->user_id = '1';
        $this->admin = 0;

        return 0;
        }
    }
    
    function validation_mode() {
    global $user, $pass, $remember, $HTTP_COOKIE_VARS;
             $pass = md5($pass);
        if(!empty($user) && !empty($pass)) {
        $this->set_username($user);
        $this->set_password($pass);

            if($this->validate()) {
            $this->set_login_cookies($remember);
            }
        } else {
        $this->set_username($HTTP_COOKIE_VARS['username']);
        $this->set_password($HTTP_COOKIE_VARS['password']);

        $this->validate();
        }
    }
}

$user_authorization = new user_authorization;

$user_authorization->validation_mode();

$user_id = $user_authorization->user_id;

$admin = $user_authorization->admin;

$super_admin = $user_authorization->super_admin;

$username = $user_authorization->username;

$username_format = $user_authorization->username_format;

$logged_in = $user_authorization->logged_in;


Postoji li mogucnost da se unutar ove klase integrise i login za forum ili postoji neki drugi laksi nacin?

Unaprijed hvala!
 
Odgovor na temu

dr ZiDoo
Banja Luka

Član broj: 189
Poruke: 1728
*.teol.net.

Jabber: ZiDoo@elitesecurity.org
ICQ: 299539598
Sajt: zidoo.geek.rs.ba


Profil

icon Re: Jedinstven login za phpbb forum i moj sajt!01.07.2006. u 14:11 - pre 216 meseci
Naravno da postoji :)

Nisam nešto pretjerano eksperimentiso sa phpBB forumima ali koliko ja znam njihova polja za usere su relativno jednostavna. Ti trebaš da pogledaš strukturu baze phpBB-a, tablea users. Radio sam jednom prebacivanje nekih usera iz nekog cmsa u phpBB i jednostavno je. Imaš status polje, polje username i passworda. Password se nalazi u md5 obliku. Znači, napraviš funkciju kojoj proslediš parmetar username i password, pogledaš da li se podudara sa phpBB podacima, ako da onda pozoveš funkciju "set_login_cookies" iz klase user_authorization.

Fora u svemu tome je što tablea usera iz sistema CMS-a i phpBBa mora biti ista. To je mali problem. Pošto ovaj CMS očito ima nekih polja koji se ne nalaze u phpBB tabeli.

Zaključak: Trebaće to fino vremena da napraviš to što si naumio. :)
tu nema kašike....
 
Odgovor na temu

gringoon
BiH

Član broj: 64266
Poruke: 20
80.65.95.*



Profil

icon Re: Jedinstven login za phpbb forum i moj sajt!03.07.2006. u 14:17 - pre 216 meseci
Uzalud pokusavam.. Ne ide :(

Pronasao sam ovu klasu na netu:

Code:

class PHPBB_Login {

    function PHPBB_Login() {
    }

    function login( $phpbb_user_id ) {
        global $db, $board_config;
        global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;
   
        // Setup the phpbb environment and then
        // run through the phpbb login process

        // You may need to change the following line to reflect
        // your phpBB installation.
        require_once( './forum/config.php' );
   
        define('IN_PHPBB',true);

        // You may need to change the following line to reflect
        // your phpBB installation.
        $phpbb_root_path = "./forum/";
       
        require_once( $phpbb_root_path . "extension.inc" );
        require_once( $phpbb_root_path . "common.php" );

        return session_begin( $phpbb_user_id, $user_ip, PAGE_INDEX, FALSE, TRUE );
   
    }

    function logout( $session_id, $phpbb_user_id ) {
        global $db, $lang, $board_config;
        global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;
   
        // Setup the phpbb environment and then
        // run through the phpbb login process

        // You may need to change the following line to reflect
        // your phpBB installation.
        require_once( './forum/config.php' );
   
        define('IN_PHPBB',true);
       
        // You may need to change the following line to reflect
        // your phpBB installation.
        $phpbb_root_path = "./forum/";

        require_once( $phpbb_root_path . "extension.inc" );
        require_once( $phpbb_root_path . "common.php" );

        session_end( $session_id, $phpbb_user_id );
   
        // session_end doesn't seem to get rid of these cookies,
        // so we'll do it here just in to make certain.
        setcookie( $board_config[ "cookie_name" ] . "_sid", "", time() - 3600, " " );
        setcookie( $board_config[ "cookie_name" ] . "_mysql", "", time() - 3600, " " );

    }




Kazu da je univerzalna.. ali nemam blage veze kako je ubaciti na portal, kako povezati da radi!?
 
Odgovor na temu

[es] :: Web aplikacije :: Jedinstven login za phpbb forum i moj sajt!

[ Pregleda: 2287 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.