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
- Est-il le comportement courant de ci de session?
- Alors, Comment les utiliser en set et get champ personnalisé avec de CI de la table de session?
- Pourquoi la création de champs personnalisés toujours perdu après je passe à une autre page?
- 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. Ouvrirautoload.php
ajouter cette$autoload['libraries'] = array('database', 'session');
. Que votre contrôleur n'a pas de session d'appel de la bibliothèque. Sur leget_session_test
supprimer la$this->session->userdata()
deux ligne. Ce sont mes suppositions...vous pouvez l'essayer. - Thx brod, je vais essayer..
Vous devez vous connecter pour publier un commentaire.
Il existe déjà des dispositions codigntier pour stocker session
veuillez vérifier le lien
vous devez d'abord créer une table de base de données à cette fin
Une fois que vous avez créé votre table de base de données, vous pouvez activer l'option de base de données dans votre config.php fichier comme suit:
Ce comportement se produit lorsque votre
user_agent
dans votre base de données est trop court :En fait, lorsque vous comptez les caractères dans votre user_agent, vous avez plus de 50 personnages, donc CI ne trouverez pas de session dans la base de données avec cette user_agent, comme il a été précédemment stocké à l'tronquée à 50 caractères.
Essayez de faire de ce champ grand, il devrait résoudre votre problème :