如何在ci_session中从session_data保存单个数据

时间:2019-05-21 07:00:51

标签: php mysql session codeigniter-3

我需要一个first_name之类的单一数据才能使用ci_session保存到另一个字段。我该如何实现?

这里$session_data将保存到ci_session。我需要将其中的特定数据传递到日志字段。

  

__ ci_last_regenerate | i:1558420176; logged_in | b:1; profile | O:8:“ stdClass”:18:{s:2:“ id”; s:1:“ 1”; s:5:“电子邮件“; s:17:” teacher@email.com“; s:7:” role_id“; s:1:” 2“; s:19:” tekteach_login_flag“; s:1:” 0“; s:15: “ date_registered”; s:19:“ 0000-00-00 00:00:00”; s:7:“已删除”; s:1:“ 0”; s:10:“名字”; s:4:“ omar“; s:9:”姓氏“; s:4:” isip“; s:11:”中间名“; s:7:”切斯特“; s:6:”性别“; s:4:”男性“ ; s:8:“生日”; s:10:“ 2019-05-10”; s:6:“状态”; s:6:“有效”; s:12:“成绩课程”; s:0:“ “; s:10:” created_on“; N; s:10:” created_by“; s:1:” 0“; s:11:” modified_on“; N; s:11:” modified_by“; s:1: “ 0”; s:10:“ deleted_by”; s:1:“ 0”;}

if ($this->_row_exists === FALSE)
{
    $insert_data = array(
        'id' => $session_id,
        'ip_address' => $_SERVER['REMOTE_ADDR'],
        'timestamp' => time(),
        'data' => ($this->_platform === 'postgre' ? base64_encode($session_data) : $session_data),
        'log' => 1 //my own field
    );

1 个答案:

答案 0 :(得分:0)

将会话项目“ first_name”添加到$insert_data['log']非常简单。该答案假设您使用的是CodeIgniter版本> 3.0.0。

$insert_data = array(
    ...other items...
    'log' => $this->session->first_name;
);

如果您需要其他会话数据项,只需将“ first_name”更改为所需的项。例如,电子邮件数据

'log' => $this->session->email;

或者,如果您完全肯定会话数据中包含所需的项目,您也可以这样做。

$insert_data = array(
    ...other items...
    'log' => $_SESSION['first_name'];
);

这是最少占用资源且最快的获取会话数据的方法。 但是请注意,如果$_SESSION['first_name']不存在,则会引发错误。第一个示例不会抛出错误,而是返回NULL