Eigene Session Variablen speichern

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Gargo
Mitglied
Beiträge: 1
Registriert: 09.07.2009 22:05

Eigene Session Variablen speichern

Beitrag 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
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: Eigene Session Variablen speichern

Beitrag 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
Ich bin nicht ganz dicht.... na und.
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“