升级 Session

文档

变更点

  • 只是一些小变化,如方法名称和库的加载。

  • 在数据库驱动中,Session 表的定义已经发生了变化。

升级指南

  1. 在使用 Session 库的任何地方,用 $session = session(); 替换 $this->load->library('session');

  2. 从那时起,必须用 $session 后跟新方法名替换以 $this->session 开头的每一行。

    • 要访问 Session 数据,请使用 $session->item$session->get('item') 语法,而不是 CI3 语法 $this->session->name

    • 要设置数据,请使用 $session->set($array); 代替 $this->session->set_userdata($array);

    • 要删除数据,请使用 unset($_SESSION['some_name']);$session->remove('some_name'); 代替 $this->session->unset_userdata('some_name');

    • 要将 Session 数据标记为只在下一个请求中可用的闪存数据,请使用 $session->markAsFlashdata('item'); 代替 $this->session->mark_as_flash('item');`

  3. 如果你使用数据库驱动,你需要重新创建 Session 表。参见 DatabaseHandler 驱动程序

代码示例

CodeIgniter 3.x 版本

<?php

$this->load->library('session');

$_SESSION['item'];
$this->session->item;
$this->session->userdata('item');

CodeIgniter 4.x 版本

<?php

$session = session();

$_SESSION['item'];  // But we do not recommend to use superglobal directly.
$session->get('item');
$session->item;
session('item');