yf_session_driver_db class

Fileplugins/session/classes/session/yf_session_driver_db.class.php
Use_class('session_driver_db', 'classes/session/')
Extendsyf_session_driver

Public properties

PropertyDefaultDescription
None declared in this class.

Public methods 6

close

public function close()
    public function close()
    {
        // This is used for a manual call of the session gc function
        $this->gc(0);
        return true;
    }

destroy

public function destroy($ses_id)
    public function destroy($ses_id)
    {
        return db()->query('DELETE FROM ' . db('sessions') . ' WHERE id = "' . _es($ses_id) . '"');
    }

gc

public function gc($life_time)
    public function gc($life_time)
    {
        // Be sure to adjust 'php_value session.gc_maxlifetime' to a large enough
        // value.	For example, if you want user sessions to stay in your database
        // for three weeks before deleting them, you need to set gc_maxlifetime
        // to '1814400'.	At that value, only after a user doesn't log in after
        // three weeks (1814400 seconds) will his/her session be removed.
        $ses_life = strtotime('-5 minutes');
        // FIXME: need to implement max life time here instead of '-5 minutes'
        return db()->query('DELETE FROM ' . db('sessions') . ' WHERE last_time < ' . (int) (time() - $ses_life));
    }

open

public function open($path, $name)
    public function open($path, $name)
    {
        return true;
    }

read

public function read($ses_id)
    public function read($ses_id)
    {
        $session = db()->get('SELECT * FROM ' . db('sessions') . ' WHERE id = "' . _es($ses_id) . '"');
        return is_array($session) && ! empty($session) ? $session['data'] : '';
    }

write

public function write($ses_id, $data)
    public function write($ses_id, $data)
    {
        $session = db()->get('SELECT * FROM ' . db('sessions') . ' WHERE id = "' . _es($ses_id) . '"');
        if (is_array($session) && ! empty($session)) {
            db()->update_safe('sessions', [
                'user_id' => (int) $session['user_id'],
                'user_group' => (int) $session['user_group'],
                'host_name' => common()->get_ip(),
                'data' => $data,
                'type' => MAIN_TYPE,
                'last_time' => time(),
            ], 'id="' . db()->es($ses_id) . '"');
        } elseif ($data || count((array) $_COOKIE)) {
            // Only save session data when when the browser sends a cookie.	This keeps
            // crawlers out of session table. This improves speed up queries, reduces
            // memory, and gives more useful statistics.
            db()->insert_safe('sessions', [
                'id' => $ses_id,
                'user_id' => 0,
                'user_group' => 0,
                'start_time' => time(),
                'last_time' => time(),
                'host_name' => common()->get_ip(),
                'data' => $data,
                'type' => MAIN_TYPE,
            ]);
        }
        return true;
    }