2010-06-01 15 views
7

¿Cómo puedo usar la sesión en la tabla de la base de datos con php y mysql?establecer la sesión en la base de datos en php

+1

¿Puede darnos un poco más de información? ¿Qué vas a hacer exactamente con las sesiones? – 2ndkauboy

+2

Es posible que desee buscar primero en Google. Uno de los primeros enlaces que le proporcionará es este, por ejemplo: http://www.devshed.com/c/a/PHP/Storing-PHP-Sessions-in-a-Database/ – nico

+0

Por lo general, la sesión se almacena en archivos temporales en el servidor. Quiero almacenar la sesión en la tabla de la base de datos. – shin

Respuesta

18

Usted tendría que crear un objeto de esta manera:

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(); 
    } 
} 

Entonces, antes de session_start iniciado esta clase!

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

+0

¿Puede decirme cómo puedo usar este código para configurar sesión? ¿Hay alguna diferencia con la configuración de sesión normal? – shin

+0

Básicamente, si usa $ _SESSION ... Esto consultará el SessionHandler, lo que significa que el manejador de sesión es el intermediario, almacena datos y devuelve datos. Si aplica su propio manejador, puede almacenarlo de la manera que desee, DB, Archivo, etc. Ejecutar esto le dirá a PHP que cuando usa la sesión para consultar esta clase para los datos. Siempre que incluya este archivo y cree una instancia de él, todo lo demás que haga no cambiará. El método de almacenamiento será DB. He actualizado mi publicación, por favor revise – RobertPitt

+0

También este código es un ejemplo, lo extendería para tener un objeto de almacenamiento para que reduzca las llamadas a db, ¡también mire a MemCached! – RobertPitt

Cuestiones relacionadas