如何在代码点火器中使用会话表 [英] How to use session table in code igniter

查看:59
本文介绍了如何在代码点火器中使用会话表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是代码点火器的新手,想问一下如何在数据库中的会话表中使用会话.我已经用这种结构创建了会话表.

I'm new on code igniter and wanna ask how to use session with session table in database. I have create session table with this 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;

并使用两个控制器来测试使用的会话.首先,我运行set_session_test()控制器.

and use two controller to test session used. First I run set_session_test() controller.

public function set_session_test()
{
   $this->load->library('session');
   $this->session->set_userdata('username', 'Jhon');
   $this->session->set_userdata('email', 'jhon@gmail.com');
   echo "<pre>"; print_r($this->session->all_userdata()); echo "</pre>";
}

结果

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
)

然后我运行get_session_test()来检查它的会话值是否仍然存在.

then I run get_session_test() to check if it session value could be still there.

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>";
}

结果是

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] => 
)

不幸的是,我没有找到我存储的任何用户名和电子邮件会话.我检查表sys_session,它创建两行session_id.问题是

Unfortunately, I didn't found any username and email session that i stored. And i check table sys_session, it creates two row of session_id. The question is

  1. 这是ci会话的常见行为吗?
  2. 那么,如何在CI表会话中使用set和get自定义字段?
  3. 为什么创建的自定义字段在移至另一页后总是丢失?
  4. 当我运行this-> session-> sess_destroy()时,为什么不删除表会话中的任何会话?

提前谢谢.

推荐答案

已在codigntier中进行了存储会话的规定

There is already provision made in codigntier to store session

CREATE TABLE IF NOT EXISTS  `ci_sessions` (
    session_id varchar(40) DEFAULT '0' NOT NULL,
    ip_address varchar(45) DEFAULT '0' NOT NULL,
    user_agent varchar(120) NOT NULL,
    last_activity int(10) unsigned DEFAULT 0 NOT NULL,
    user_data text NOT NULL,
    PRIMARY KEY (session_id),
    KEY `last_activity_idx` (`last_activity`)
);

创建数据库表后,可以在config.php文件中启用数据库选项,如下所示:

Once you have created your database table you can enable the database option in your config.php file as follows:

$config['sess_use_database'] = TRUE;

这篇关于如何在代码点火器中使用会话表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆