[英]How to store username and users_id in codeigniter 3.1 session database table
我正在使用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>";
}
这里的输出显示在浏览器中是
Array
(
[username] => johndoeasdas
[user_id] => johndasdasoe@some-site.com
[logged_in] => 1
)
并存储在数据库中这是会话存储在数据库中的图像
在这里,我无法从会话将用户名和user_id存储到数据库中。
如何将会话中的用户名和user_id存储到数据库表中。
感谢您的所有建议。
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`)
);
该表将存储您的会话数据。 现在我们需要设置配置变量。 转到“ application / config / config.php”并更新以下变量:
$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;
现在使用存储会话数据
$data = array(
'name' => 'xyz', //some value
'is_logged_in' => TRUE
);
$this->session->set_userdata($data);
有关更多详细信息,请访问https://www.codeigniter.com/userguide3/libraries/sessions.html
实际上,您不需要更改ci_session
的结构,则ci_session
更改表结构。 使用CodeIgniter文档中的表结构。
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`)
);
您添加到会话数据中的所有内容都将存储在表格的“数据”列中。
会话数据已经是一个数组。 您只能通过将数据数组作为会话数据项来增加生活的难度。 该测试控制器可以更轻松地访问任何给定的会话数据项。
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';
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.