2013-06-08 2 views
0

J'essaie de configurer un système de connexion/déconnexion d'utilisateur en utilisant php et mysql. J'ai trouvé de la documentation sur le sujet ici: http://phpmaster.com/writing-custom-session-handlers/. J'essaie de le suivre (j'ai aussi tiré d'autres sources - mais c'est le principal).configurer la session php (session_set_save_handler)

Voici une partie de mon code de "my_session_handler.php":

class MySessionHandler implements SessionHandlerInterface { 

    private $path = session_save_path(); 
    private $name = session_name(); 
    private $sessionId = session_id(); 

    function open($path, $name) { 
     $db = new PDO("mysql:host=localhost;dbname=itit", "root", "bonjour3"); 

     $sql = "INSERT INTO session SET session_id =" . $db->quote($sessionId) . ", session_data = '' ON DUPLICATE KEY UPDATE session_lastaccesstime = NOW()"; 
     $db->query($sql);  


    ... 

Ma question est, où sont les "$ path" et variables "$ name" venant de dans l'exemple que je citais ci-dessus? Je les ai déclarés comme variables privées et utilisé certaines fonctions pour faire ce que je pense doit être fait. Mais sur le site Web que je suis avec - aucune de ces variables ne sont déclarées - avec $ sessionId. Je vois que la fonction read renvoie $ data. Donc, je l'ai utilisé dans la fonction "écriture" comme ceci:

function write($sessionId, this.read($sessionId)) { 
    $db = new PDO("mysql:host=localhost;dbname=itit", "root", "bonjour3"); 

    $sql = "INSERT INTO session SET session_id =" . $db->quote($sessionId) . ", session_data =" . $db->quote($data) . " ON DUPLICATE KEY UPDATE session_data =" . $db->quote($data); 
    $db->query($sql) 
} 

Est-ce que je fais cela correctement?

Répondre

1

Ces paramètres sont utilisés par le gestionnaire d'enregistrement de session par défaut, qui enregistre les données de session dans les fichiers. Ils proviennent du fichier php.ini et sont utilisés pour former les noms de fichiers. Ils sont fournis à votre gestionnaire lorsque PHP appelle la méthode open().

Si vous écrivez un gestionnaire personnalisé, vous pouvez les ignorer, comme le fait le code sur cette page Web.

+0

super ... merci pour l'explication! – ewizard

+0

barmar ... j'ai encore une question - dois-je vraiment utiliser les fonctions du MySessionHandler? Par exemple ... ai-je besoin d'utiliser la fonction close() quand je veux fermer une session? Ou est-ce que le gestionnaire de session fait tout ça pour moi? – ewizard

+0

Vous n'utilisez pas ces fonctions directement, elles sont utilisées par le gestionnaire de session. Lorsque l'application appelle 'session_close()', le gestionnaire de session appelle votre fonction de fermeture. – Barmar

Questions connexes