(PHP 4, PHP 5, PHP 7, PHP 8)
session_encode — 現在のセッションデータを、セッションエンコードされた文字列に変換する
session_encode() は、 現在のセッションの内容をシリアライズした文字列を返します. 現在のセッションの内容は、スーパーグローバル $_SESSION から取得します。
デフォルトのアンシリアライズの方法は PHP が内部的に実装しているものであり、 unserialize() とは違います。 シリアライズの方法は、session.serialize_handler で設定できます。
この関数にはパラメータはありません。
現在のセッションの内容をエンコードしたものを返します。
失敗した場合に false を返します
session_encode() を使う前には session_start() を呼ぶ必要があります。
session_encode() just return the session dataset in a formatted form
session_start();
$_SESSION['login_ok'] = true;
$_SESSION['nome'] = 'sica';
$_SESSION['inteiro'] = 34;
echo session_encode();
this code will print
login_ok|b:1;nome|s:4:"sica";inteiro|i:34;session_encode() can't handle pipes in your keys.
<?php
session_start();
$_SESSION = ['foo|bar'=>'ba;z']; pathetic
dump(session_encode()); // false because "foo|bar" contains a pipe
?>The session_encode and session_decode functions are incomplete.
Because there is no option to collect the output values for session_decode or input an array in session_encode.
I faced this issue while trying to implement custom session using session_set_save_handler.
It led me to limit the functionality to particular serialize_handler and had to hardcode the encode and decode functions like serialize and unserialize for option ['serialize_handler' => 'php_serialize'] instead of session_encode and session_decode once i am done with defining the encoding algo.