PHP Conference Japan 2024

session_encode

(PHP 4, PHP 5, PHP 7, PHP 8)

session_encode将当前会话数据编码为会话编码字符串

描述

session_encode(): string|false

session_encode() 返回存储在 $_SESSION 超全局变量中的当前会话数据的序列化字符串。

默认情况下,使用的序列化方法是 PHP 内部方法,与 serialize() 不同。可以使用 session.serialize_handler 设置序列化方法。

参数

此函数没有参数。

返回值

返回当前会话的编码内容,或在失败时返回 false

注释

警告

必须在使用 session_encode() 之前调用 session_start()

参见

添加注释

用户贡献的注释 3 条注释

19
<carlos sica>sica at wnet dot com dot br
19 年前
session_encode() 只以格式化的形式返回会话数据集

session_start();

$_SESSION['login_ok'] = true;
$_SESSION['nome'] = 'sica';
$_SESSION['inteiro'] = 34;

echo session_encode();

这段代码将打印

login_ok|b:1;nome|s:4:"sica";inteiro|i:34;
2
Mark P
7 年前
session_encode() 无法处理键中的管道符。

<?php
session_start
();
$_SESSION = ['foo|bar'=>'ba;z']; pathetic
dump
(session_encode()); // false 因为 "foo|bar" 包含管道符
?>
0
polygon dot co dot in at gmail dot com
11 天前
session_encode 和 session_decode 函数不完整。

因为没有选项可以收集 session_decode 的输出值或在 session_encode 中输入数组。

我在尝试使用 session_set_save_handler 实现自定义会话时遇到了这个问题。

这导致我将功能限制在特定的 serialize_handler,并且必须像 serialize 和 unserialize 一样为选项 ['serialize_handler' => 'php_serialize'] 硬编码 encode 和 decode 函数,而不是在我完成编码算法定义后使用 session_encode 和 session_decode。
To Top