CI session类「建议收藏」

CI session类「建议收藏」初始化 Session 类 Session 通常会在每个页面载入的时候全局运行,所以 Session 类必须首先被初始化。 您可以在 控制器 的构造函数中初始化它, 也可以在系统中 自动加载。Ses…

CI session类

要手动初始化 Session 类,你可以在控制器的构造函数中使用 $this->load->library() 方法:

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

代码100分

初始化之后,就可以使用下面的方法来访问 Session 对象了:

代码100分$this->session

重要

由于 加载类 是在 CodeIgniter 的控制器基类中实例化的, 所以如果要在你的控制器构造函数中加载类库的话,确保先调用 parent::__construct() 方法。

1. session数据

session数据是个简单的数组,带有一个特定的session ID(cookie)。 CodeIgniter 使用了相同的方式来访问 session 数据,同时使用了 PHP 自带的 session 处理机制, 使用 session 数据和操作 $_SESSION 数组一样简单(包括读取,设置,取消设置)。

2. 获取 Session 数据

session数组中的任何信息都是可以通过$_SESSION全局变量获取:比如:$_SESSION[“item”] 或者使用方法:$this->session->item; 同时为了和之前的版本兼容,也可以使用userdata()方法:$this->session->userdata(“item”);

其中,item 是你想获取的数组的键值。例如,将 “name” 键值对应的项赋值给 $name 变量, 你可以这样:

$name = $_SESSION[“name”]; or  $name = $this->session->name; or $name = $this->session->userdata(“name”);

如果你访问的项不存在,userdata() 方法返回 NULL 。

如果你想获取所有已经存在的userdata, 你可以忽略 item 参数:

$_SESSION

// or:

$this->session->userdata();

3. 添加 Session 数据

假设某个用户访问你的网站,当他完成认证之后,你可以将他的用户名和 email 地址添加到 session 中, 这样当你需要的时候你就可以直接访问这些数据,而不用查询数据库了。 你可以简单的将数据赋值给 $_SESSION 数组,或赋值给 $this->session 的某个属性。

同时,老版本中的通过 “userdata” 来赋值的方法也还可以用,只不过是需要传递一个包含你的数据的数组 给 set_userdata() 方法:

代码100分$this->session->set_userdata($array);

 

其中,$array 是包含新增数据的一个关联数组,下面是个例子:

$newdata = array(
    "username"  => "johndoe",
    "email"     => "johndoe@some-site.com",
    "logged_in" => TRUE
);

$this->session->set_userdata($newdata);

如果你想一次只添加一个值,set_userdata() 也支持这种语法:

$this->session->set_userdata("some_name", "some_value");

如果你想检查某个 session 值是否存在,可以使用 isset():

// returns FALSE if the "some_name" item doesn"t exist or is NULL,
// TRUE otherwise:
isset($_SESSION["some_name"])

或者,你也可以使用 has_userdata():

$this->session->has_userdata("some_name");

4. 删除 Session 数据

和其他的变量一样,可以使用 unset() 方法来删除 $_SESSION 数组中的某个值:

unset($_SESSION["some_name"]);

// or multiple values:

unset(
    $_SESSION["some_name"],
    $_SESSION["another_name"]
);

同时,正如 set_userdata() 方法可用于向 session 中添加数据,unset_userdata() 方法可用于删除指定键值的数据。例如,如果你想从你的 session 数组中删除 “some_name”:

$this->session->unset_userdata("some_name");

这个方法也可以使用一个数组来同时删除多个值:

$array_items = array("username", "email");

$this->session->unset_userdata($array_items);

 

销毁 Session

要清除当前的 session(例如:退出登录时),你可以简单的使用 PHP 自带的 session_destroy() 函数或者 sess_destroy() 方法。 两种方式效果完全一样:

session_destroy();

// or

$this->session->sess_destroy();

注解

这必须是同一个请求中关于 session 的最后一次操作,所有的 session 数据(包括 flashdata 和 tempdata)都被永久性销毁,销毁之后,关于 session 的方法将不可用。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10069.html

(0)
上一篇 2023-01-26
下一篇 2023-01-26

相关推荐

  • Excel表格怎么通过公式提取单元格文本中的指定字符串

    Excel表格怎么通过公式提取单元格文本中的指定字符串最近学习群中有童鞋从网页上抓取了一些数据,这些数据包含了作者、标题、发布时间和页码数等信息,现在他需要通过excel来讲这些信息进行分列。有什么

    2023-03-01
    142
  • 选方向?大数据的职位你了解多少[亲测有效]

    选方向?大数据的职位你了解多少[亲测有效]这是大数据入门常识第二篇,主要讨论大数据工作的方向问题。第一篇没看的同学可以补一下: "3000字长文教你大数据该怎么学!" 有不少刚入门的同学在后台会问类似这样的问题 看招聘网站

    2023-03-01
    160
  • Python删除字符串中某个字符

    Python删除字符串中某个字符在Python中,我们可以使用字符串的replace()函数来删除指定的字符。这个函数接收两个参数,分别是要替换的字符和替换后的字符。如果你想要删除某个字符,那么你可以将替换后的字符设置为空字符串。

    2024-08-01
    29
  • 让Python Set在Linux中正确运行的方法

    让Python Set在Linux中正确运行的方法在Linux中,支持Python Set的发行版有很多,但是并非所有发行版都适合Python Set的开发和部署。一般情况下,选择社区活跃、更新频繁的发行版更加靠谱,例如Ubuntu、Fedora、Debian等。

    2024-02-12
    93
  • Sqlite—Python接口[通俗易懂]

    Sqlite—Python接口[通俗易懂]#!/usr/bin/env python # -*- coding:utf-8 -*- import sqlite3,os,time import traceback class Sqlite():

    2022-12-26
    159
  • 跑批是什么意思啊_pjsk保底

    跑批是什么意思啊_pjsk保底摘要:SPL实现了更优算法,性能远远超过存储过程,能显著提高单机计算效率,非常适合跑批计算。 本文分享自华为云社区《Java开源专业计算引擎:跑批真的这么难吗?》,作者: Java李杨勇。 业务系统产

    2023-06-02
    151
  • soapui安装_soapui怎么使用

    soapui安装_soapui怎么使用soapui作为一款接口测试工具不单单只能做接口的调试验证,还可以跟maven,jenkins集成做接口自动化测试,实现无人值守的自动化测试。 image.png 1.SoapUI安装文件下载 安装…

    2023-04-14
    165
  • sql语句执行步骤详解[通俗易懂]

    sql语句执行步骤详解[通俗易懂][toc] 一、准备工作 先来一段伪代码,首先你能看懂么? 继续做以下的前期准备工作: 新建一个测试数据库TestDB; 创建测试表table1和table2; 插入测试数据; 准备工作做完以后,ta

    2022-12-23
    176

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注