установить сессию в базе данных в php - PullRequest
8 голосов
/ 01 июня 2010

Как я могу использовать сеанс в таблице базы данных с php и mysql?

Ответы [ 4 ]

19 голосов
/ 01 июня 2010

Вам нужно создать объект примерно так:

class SessionHandler 
{ 
    private static $lifetime = 0; 

    private function __construct() //object constructor
    { 
       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();
    }
}

Затем, перед началом сеанса, инициируйте этот класс!

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

1 голос
/ 01 июня 2010

Вам нужно будет использовать session_set_save_handler для написания пользовательских функций открытия, закрытия, чтения, записи, уничтожения и сборки мусора.

1 голос
/ 01 июня 2010

Вы управляете этим в php.ini в соответствии с директивой session_handler. Проверьте http://www.tonymarston.net/php-mysql/session-handler.html для легкой прогулки (использовал это прежде).

0 голосов
/ 04 февраля 2014

См. Мой фрагмент кода github PHP5.4-DB-Session-Handler-Class для класса управления сеансами на основе базы данных в PHP 5.4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...