Comment utiliser la table de session dans le code de l'allumeur

Je suis nouveau sur le code de l'allumeur et que vous voulez demander comment utiliser les session avec table de session dans la base de données.
J'ai créer une session table avec ce sctructure.

CREATE TABLE `sys_sessions` (
    `session_id` VARCHAR(40) NOT NULL DEFAULT '0' COLLATE 'utf8_unicode_ci',
    `ip_address` VARCHAR(16) NOT NULL DEFAULT '0' COLLATE 'utf8_unicode_ci',
    `user_agent` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
    `last_activity` INT(10) UNSIGNED NOT NULL DEFAULT '0',
    `user_data` TEXT NOT NULL COLLATE 'utf8_unicode_ci',
    PRIMARY KEY (`session_id`)
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB;

et l'utilisation de deux contrôleur de session de test utilisé. J'ai d'abord exécuter set_session_test() du contrôleur.

public function set_session_test()
{
   $this->load->library('session');
   $this->session->set_userdata('username', 'Jhon');
   $this->session->set_userdata('email', '[email protected]');
   echo "<pre>"; print_r($this->session->all_userdata()); echo "</pre>";
}

Et le résultat

Array
(
    [session_id] => dd7e0e2266da6481ef45faaa7e3c808b
    [ip_address] => 127.0.0.1
    [user_agent] => Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
    [last_activity] => 1387619782
    [user_data] => 
    [username] => Jhon
    [email] => jhon@gmail.com
)

puis-je exécuter get_session_test() pour vérifier si sa valeur de session pourrait être encore là.

public function get_session_test()
{
   $this->load->library('session');
   $this->session->userdata('username');
   $this->session->userdata('email');
   echo "<pre>"; print_r($this->session->all_userdata()); echo "</pre>";
}

Et le résultat est

Array
(
    [session_id] => 1b10e3671728804a63266bb9295b7e5d
    [ip_address] => 127.0.0.1
    [user_agent] => Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
    [last_activity] => 1387619831
    [user_data] => 
)

Malheureusement, je n'ai pas trouvé de nom d'utilisateur et e-mail de la session que j'ai stocké. Et je consulte le tableau sys_session, il crée deux ligne de session_id. La question est de

  1. Est-il le comportement courant de ci de session?
  2. Alors, Comment les utiliser en set et get champ personnalisé avec de CI de la table de session?
  3. Pourquoi la création de champs personnalisés toujours perdu après je passe à une autre page?
  4. Quand je lance this->session->sess_destroy(), pourquoi il n'est pas de supprimer une session dans le tableau de session?

Merci à l'avance..

  • Je pense que $this->laod->library('session'); supprimer. Ouvrir autoload.php ajouter cette $autoload['libraries'] = array('database', 'session');. Que votre contrôleur n'a pas de session d'appel de la bibliothèque. Sur le get_session_test supprimer la $this->session->userdata() deux ligne. Ce sont mes suppositions...vous pouvez l'essayer.
  • Thx brod, je vais essayer..
InformationsquelleAutor Ayip.Eiger | 2013-12-21