Seite 1 von 1

Eigene Session Variablen speichern

Verfasst: 09.07.2009 22:53
von Gargo
Hy zusammen

Nach mehrtägigem Interval-Suchen hab ich's nun aufgegeben und mich entschlossen doch mal einen Beitrag zu meinem Problem zu verfassen.

Als vorab Info zum besseren Verständnis: Ich habe eine Haupteinstiegsseite unter dem Webroot (/index.php) und das Forum unter /forum. phpBB wurde gemäss einschlägigen Tutorials in die index.php eingepflegt.

Ich möchte nun Daten in einer Session eines Users ablegen. Normalerweise würde ich dazu $_SESSION verwenden, phpBB hat da ja aber sein eigenes Session Handling, so dass man $_SESSION mal in die Ecke stellen kann weils nix nützt. Cookies sind aber keine alternative da mir die zwischen den Pages flöten gehen wenn man vom Forum raus in den "Nicht zum Forum gehörenden Teil" zurück geht. Zudem könnte es ja sein das Cookies gar nicht akzeptiert werden.

Gibt es in phpBB keine Möglichkeit Daten während einer Session zu speichern?

Gruss
Gargo

Re: Eigene Session Variablen speichern

Verfasst: 11.07.2009 22:42
von Helmut
Hallo Gargo,

du könntest dich direkt in die includes/session.php einklinken und in der Tabelle phpbb_sessions eine neue Spalte anlegen, so habe ich es auch testweise gemacht, um die vom User gewählte Sprache mit abzulegen. Hier mal mein Beispiel (Ausschnitt) damit du weist, an welcher Stelle das rein muss:

Code: Alles auswählen

[...]
        $session_autologin = (($this->cookie_data['k'] || $persist_login) && $this->data['is_registered']) ? true : false;
        $set_admin = ($set_admin && $this->data['is_registered']) ? true : false;

        //Quickly change language
        $sql = 'SELECT user_id, user_lang
            FROM ' . USERS_TABLE . "
            WHERE user_id = " . $this->data['user_id'];    
        $result = $db->sql_query($sql);
        $rowlang = $db->sql_fetchrow($result);
        //--------------------------

        // Create or update the session
        $sql_ary = array(
            'session_user_id'        => (int) $this->data['user_id'],
            'session_start'            => (int) $this->time_now,
            'session_last_visit'    => (int) $this->data['session_last_visit'],
            'session_time'            => (int) $this->time_now,
            'session_browser'        => (string) trim(substr($this->browser, 0, 149)),
            'session_forwarded_for'    => (string) $this->forwarded_for,
            'session_ip'            => (string) $this->ip,
            'session_autologin'        => ($session_autologin) ? 1 : 0,
            'session_admin'            => ($set_admin) ? 1 : 0,
            'session_viewonline'    => ($viewonline) ? 1 : 0,
            
            //Quickly change language test
            'session_lang'        => $rowlang['user_lang'],
            //'session_lang'        => '',
        );

        if ($this->update_session_page)
        {
            $sql_ary['session_page'] = (string) substr($this->page['page'], 0, 199);
            $sql_ary['session_forum_id'] = $this->page['forum'];
        }
 [...]
 
Gruß Helmut