php.hr

PHP & MySQL => PHP => Autor teme: Anonymous - 02.07.2006., 20:47



Naslov: Jedinstven login za phpbb forum i moj sajt!
Autor: Anonymous - 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!


Naslov: Jedinstven login za phpbb forum i moj sajt!
Autor: c0dr3x - 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


Naslov: Jedinstven login za phpbb forum i moj sajt!
Autor: Anonymous - 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!


Naslov: Jedinstven login za phpbb forum i moj sajt!
Autor: c0dr3x - 03.07.2006., 14:52
cookie - klikni me ovdje (http://hr.php.net/setcookie)

daklen tu si malo prostudiraj kako se postavljaju cookie-ji, ako ti nakon toga nebu bilo jasnije, pitaj si prijatelja Google (http://www.google.com).

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


php.hr | Powered by SMF 1.1.13. © 2005, Simple Machines LLC. All Rights Reserved.