FuelPHP - Cookie 和 Session 管理

Cookie 提供客户端数据存储,它仅支持少量数据。通常,每个域为 2KB,具体取决于浏览器。Session 提供服务器端数据存储,它支持大量数据。让我们来看看如何在 FuelPHP Web 应用程序中创建 cookie 和 session。

Cookies

FuelPHP 提供了一个 Cookie 类来创建 cookie 项。Cookie 类用于创建、分配和删除 cookie。

配置 Cookie

Cookie 类可以通过主应用程序配置文件进行全局配置,该文件位于 fuel/app/config/config.php。它的定义如下。

'cookie' => array (

    //cookie 过期前的秒数
    'expiration' => 0,
    
    //限制 cookie 可用的路径
    'path' => '/',
    
    //限制 cookie 可用的域
    'domain' => null,
    
    //仅通过安全连接传输 cookie
    'secure' => false,
    
    //仅通过 HTTP 传输 cookie,禁用 Javascript 访问
    'http_only' => false,
),

方法

Cookie 类提供创建、访问和删除 cookie 项的方法。它们如下 −

set()

set 方法用于创建 Cookie 变量。它包含以下参数,

  • $name − $_COOKIE 数组中的键。

  • $value − cookie 的值。

  • $expiration − cookie 应持续的秒数。

  • $path − 服务器上 cookie 可用的路径。

  • $domain −可以使用 cookie 的域。

  • $secure − 如果只想通过安全连接传输 cookie,请设置为 true。

  • $httponly − 仅允许通过 HTTP 传输 cookie,禁用 JavaScript 访问。

Cookie::set('theme', 'green');

get()

get 方法用于读取 Cookie 变量。它包含以下参数,

  • $name − $_COOKIE 数组中的键。

  • $value −如果 $_COOKIE 数组中没有该键,则返回该值。

Cookie::get('theme');

delete()

delete 方法用于删除 Cookie 变量。它包含以下参数,

  • $name − $_COOKIE 数组中的键。

  • $value − Cookie 的值。

  • $domain − Cookie 可用的域。

  • $secure −如果只想通过安全连接传输 cookie,请设置为 true。

  • $httponly − 仅允许通过 HTTP 传输 cookie,禁用 JavaScript 访问。

Cookie::delete('theme');

Session

FuelPHP 提供了类 Session 来维护应用程序的状态。

配置 Session

Session 类可以通过特殊的配置文件 fuel/core/config/session.php 进行配置。一些重要的配置条目如下 −

  • auto_initialize − 自动初始化 session。

  • driver − session 驱动程序的名称。Session 使用 driver 实现,可能的选项有 cookie、db、memcached、redis 和 file。默认驱动程序为 cookie。

  • match_ip − 检查客户端 IP。

  • match_ua −检查客户端用户代理。

  • expiration_time − 会话超时值(以秒为单位)。

  • rotation_time − 更新会话的时间。

会话方法

Session 类提供了操作会话数据的方法。它们如下,

instance()

instance 方法返回默认或特定实例,该实例通过名称标识。

$session = Session::instance(); // 默认实例
$session = Session::instance('myseesion'); // 特定实例

set()

set 方法用于分配 Session 变量。

Session::set('userid', $userid);

get()

get 方法允许您从会话中检索存储的变量。

$userid = Session::get('userid');

delete()

delete 方法允许您删除存储的会话变量。

Session::delete('userid');

create()

create 方法允许您创建新的会话。如果会话已经存在,它将被销毁并创建一个新的会话。

Session::create();

destroy()

destroy 方法用于销毁现有会话。

Session::destroy();

read()

read 方法允许您读取会话。

Session::read();

write()

write 方法允许您写入会话。

Session::write();

key()

key 方法允许您检索会话密钥的元素。密钥的值是唯一的。

$session_id = Session::key('session_id');