php.hr
Dobrodošli, Gost. Molimo, prijavite se ili se registrirajte.
18.03.2025., 03:58
1878 Postova 1000 Tema 442 Članova
Najnoviji Član: medolino
php.hr  |  PHP & MySQL  |  PHP  |  Jedinstven login za phpbb forum i moj sajt! « natrag naprijed »
 Str: [1]
Autor Tema: Jedinstven login za phpbb forum i moj sajt!  (Posjeta: 2958 )
Anonymous
Gost
« : 02.07.2006., 20:47 »

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:

Kod:

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!
Evidentirano
c0dr3x
PHP Programer
***
Offline Offline

Postova: 133



Profil WWW
« Odgovor #1 : 03.07.2006., 11:18 »

Kod:

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, '/');
        }
    }


vidis da ti se koriste cookiji, znaci kad logiras svoje korisnike na portalu jednostavno postavi odmah i ove cookije

pozdrav
Evidentirano
Anonymous
Gost
« Odgovor #2 : 03.07.2006., 12:58 »

Hvala na odgovoru ali ne razumijem bas najbolje... Gdje da postavim cookije, na forum? Kako? Mozes li mi to malo pribliziti, molim te!

Hvala jos jednom!
Evidentirano
c0dr3x
PHP Programer
***
Offline Offline

Postova: 133



Profil WWW
« Odgovor #3 : 03.07.2006., 14:52 »

cookie - klikni me ovdje

daklen tu si malo prostudiraj kako se postavljaju cookie-ji, ako ti nakon toga nebu bilo jasnije, pitaj si prijatelja Google.

U teoriji bi trebalo ovako to ispasti:

- nakon sto ti se korisnik ulogira na portal pokreces neku skriptu za provjeru podataka

- e sad u toj skripti nadobacis kod tipa:


Kod:

setcookie ( "username" , 'moj_username', time+3600, "www.moja-domena.com");
setcookie ( "password" , 'dekodirani_pass', time+3600, "www.moja-domena.com");


i to bi onda trebalo funcionirati, eto nadam se da ces se uspjet snaci
 Wink
pozdrav  Wink


p.s.

ne zaboravi da podaci o korisnicima , ako su u odvojenim tablicama, moraju odgovarati podacima iz tablice koju koristi forum
Evidentirano
 Str: [1]
php.hr  |  PHP & MySQL  |  PHP  |  Jedinstven login za phpbb forum i moj sajt! « natrag naprijed »
    Skoči na: