tags:

views:

156

answers:

3

How can I use session in database table with php and mysql?

A: 

You control this in php.ini under the session_handler directive. Check out http://www.tonymarston.net/php-mysql/session-handler.html for a easy walk through (used it before).

Matt S
A: 

You'll need to usesession_set_save_handler to write custom open, close, read, write, destroy, and garbage collection functions.

ceejayoz
+2  A: 

You would need to create an object like so:

class SessionHadler
{
    private static $lifetime = 0;

    private function __construct()
    {
       session_set_save_handler(
           array($this,'open'),
           array($this,'close'),
           array($this,'read'),
           array($this,'write'),
           array($this,'destroy'),
           array($this,'gc')
       );
    }

   public function start($session_name = null)
   {
       session_start($session_name); //Start it here
   }

    public static function open()
    {
        //Connect to mysql, if already connected, check the connection state here.

        return true;
    }

    public static function read($id)
    {
        //Get data from DB with id = $id;
    }

    public static function write($id, $data)
    {
        //insert data to DB, take note of serialize
    }

    public static function destroy($id)
    {
       //MySql delete sessions where ID = $id
    }

    public static function gc()
    {
        return true;
    }
    public static function close()
    {
        return true;
    }
    public function __destruct()
    {
        session_write_close();
    }
}

Then before session_start initiate this class!

include 'classes/sessionHandlerDB.php';

$session = new SessionHandler();

$session->start('userbase');

$_SESSION['name'] = 'Robert Pitt'; //This is sent to SessionHandler::write('my_id','Robert Pitt')
echo $_SESSION['name']; //This calls SessionHandler::read($id)//$id is Unique Identifier for that

http://php.net/manual/en/function.session-set-save-handler.php

http://php.net/manual/en/function.serialize.php

RobertPitt
Can you tell me how can I use this code to set session? Is there any difference with normal session setting?
shinod
Bascially whaen you use $_SESSION... This will query the SessionHandler, meaning the session handler is the middle man, it stors data and returns data, If you apply your own handler you can store it in anyway way you want,DB,File etc Executing this will tell PHP That when you use the Session to query this class for the data. aslong as you include this file and create an instance of it everything else you do will not change accept the storage method will be DB. Ive updated my post, please review
RobertPitt
Also this code is purly example, i would extend it to have a storage object so you reduce the calls to db, also look at MemCached!
RobertPitt