PHP Conference Japan 2024

session_encode

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

session_encode將目前的 Session 資料編碼為 Session 編碼字串

說明

session_encode(): 字串|false

session_encode() 會傳回儲存在 $_SESSION 超全域變數中的目前 Session 資料內容的序列化字串。

預設情況下,使用的序列化方法是 PHP 內部的,與 serialize() 不同。可以使用 session.serialize_handler 設定序列化方法。

參數

此函式沒有參數。

回傳值

傳回已編碼的目前 Session 內容,如果失敗則傳回 false

注意事項

警告

必須先呼叫 session_start() 才能使用 session_encode()

參見

新增註解

使用者貢獻的註解 3 則註解

<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;
Mark P
7 年前
session_encode() 無法處理鍵值中的管道符號。

<?php
session_start
();
$_SESSION = ['foo|bar'=>'ba;z']; pathetic
dump
(session_encode()); // false,因為 "foo|bar" 包含管道符號
?>
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'],而不是在定義編碼演算法後使用 session_encode 和 session_decode。
To Top