Php 如何在codeigniter 3.1会话数据库表中存储用户名和用户id

Php 如何在codeigniter 3.1会话数据库表中存储用户名和用户id,php,mysql,database,codeigniter,session,Php,Mysql,Database,Codeigniter,Session,我使用的是codeigniter 3.1,我想用会话中的用户名和用户ID跟踪用户,并将其存储到数据库表中。所以我在数据库中创建了codeigniter 3.1会话表。给你 CREATE TABLE IF NOT EXISTS `ci_sessions` ( `id` varchar(40) NOT NULL, `ip_address` varchar(45) NOT NULL, `user_id` varchar(45) NOT NULL,

我使用的是codeigniter 3.1,我想用会话中的用户名和用户ID跟踪用户,并将其存储到数据库表中。所以我在数据库中创建了codeigniter 3.1会话表。给你

    CREATE TABLE IF NOT EXISTS `ci_sessions` (
        `id` varchar(40) NOT NULL,
        `ip_address` varchar(45) NOT NULL,
        `user_id` varchar(45) NOT NULL,
        `username` varchar(45) NOT NULL,
        `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
        `data` blob NOT NULL,
        PRIMARY KEY (id),
        KEY `ci_sessions_timestamp` (`timestamp`)
    );
而且还改变了
config.php
会话,它也在这里

    $config['sess_driver'] = 'database';
    $config['sess_cookie_name'] = 'ci_sessions';
    $config['sess_expiration'] = 7200;
    $config['sess_save_path'] = 'ci_sessions';//its your table name name
    $config['sess_match_ip'] = FALSE;
    $config['sess_time_to_update'] = 300;
这是我的会话控制器功能

        public function session_test($value='')
        {
            $newdata = array(
                       'username'  => 'johndoe',
                       'user_id'     => 3,
                       'logged_in' => TRUE
                   );

    $this->session->set_userdata("userdata",$newdata);
    $session_id = $this->session->userdata('userdata');
    echo "<pre>";
    print_r($session_id);
    echo "</pre>";
        }
存储在数据库中的是图像,存储在数据库中的是会话

在这里,我无法将会话中的用户名和用户id存储到数据库中

如何将会话中的用户名和用户id存储到数据库表中

谢谢你的建议

$config['sess_driver'] = 'database'; //by deafault it may be 'files'
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
此表将存储会话数据。现在我们需要设置配置变量。转到“application/config/config.php”并更新以下变量:

$data = array(
    'name'         => 'xyz', //some value
    'is_logged_in' => TRUE
  );
  $this->session->set_userdata($data);
现在使用存储会话数据

CREATE TABLE IF NOT EXISTS `ci_sessions` (
        `id` varchar(128) NOT NULL,
        `ip_address` varchar(45) NOT NULL,
        `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
        `data` blob NOT NULL,
        KEY `ci_sessions_timestamp` (`timestamp`)
);
欲了解更多详情,请访问

此表将存储会话数据。现在我们需要设置配置变量。转到“application/config/config.php”并更新以下变量:

$data = array(
    'name'         => 'xyz', //some value
    'is_logged_in' => TRUE
  );
  $this->session->set_userdata($data);
现在使用存储会话数据

CREATE TABLE IF NOT EXISTS `ci_sessions` (
        `id` varchar(128) NOT NULL,
        `ip_address` varchar(45) NOT NULL,
        `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
        `data` blob NOT NULL,
        KEY `ci_sessions_timestamp` (`timestamp`)
);

有关更多详细信息,请访问

您不需要更改
ci_会话的结构
事实上,您不应该更改表结构。使用中的表结构

添加到会话数据的任何内容都将存储在表的“数据”列中

会话数据已经是一个数组。将一组数据作为会话数据项只会让生活更艰难。此测试控制器使访问任何给定会话数据项变得更加容易

公共功能会话测试($value='') { $newdata=array( 'username'=>'johndoe', “用户id”=>3, “已登录”=>TRUE ); $this->session->set_userdata($newdata); 回显“用户名:”.$this->session->username.“
”; 回显“用户ID:”$this->session->User_ID。“
”; echo“已登录:”; echo$this->session->logged_in?'Yes':'No'; }
您不需要更改
ci_会话的结构
事实上,您不应该更改表结构。使用中的表结构

添加到会话数据的任何内容都将存储在表的“数据”列中

会话数据已经是一个数组。将一组数据作为会话数据项只会让生活更艰难。此测试控制器使访问任何给定会话数据项变得更加容易

公共功能会话测试($value='') { $newdata=array( 'username'=>'johndoe', “用户id”=>3, “已登录”=>TRUE ); $this->session->set_userdata($newdata); 回显“用户名:”.$this->session->username.“
”; 回显“用户ID:”$this->session->User_ID。“
”; echo“已登录:”; echo$this->session->logged_in?'Yes':'No'; }
public function session_test($value = '')
{
    $newdata = array(
      'username' => 'johndoe',
      'user_id' => 3,
      'logged_in' => TRUE
    );

    $this->session->set_userdata($newdata);
    echo "User Name: ".$this->session->username."<br>";
    echo "User ID: ".$this->session->user_id."<br>";
    echo "Is logged in: ";
    echo $this->session->logged_in ? 'Yes' : 'No';
}