ご存知のとおり、PHP では session_encode() と session_decode() を使用してセッション データをエンコード/デコードできますが、これら 2 つの
機能を試してみると、思い通りにいかないことがわかるでしょう。考える。そこで、これを行うのに役立つ 2 つの機能をここで見つけます。
/* *
* セッションのシリアル化
*
* @param array $data
* @param boolean $safe
* @return string
*/
function serialize_session( $array, $safe = true)
{
// セッションは、希望しない場合でも参照として渡されます
if ( $safe)
{
$array = unserialize( Serialize( $array));
}
$raw = '';
$line = 0;
$keys = array_keys( $array);
foreach ( $keys as $key)
{
$value = $array[ $key];
$line++;
$raw .= $key 。 '|';
if ( is_array( $value) && isset( $value['huge_recursion_blocker_we_hope']))
{
$raw .= 'R:' 。 $value['huge_recursion_blocker_we_hope'] 。 ';';
}
else
{
$raw .= serialize( $value);
}
$array[ $key] = Array('huge_recursion_blocker_we_hope' => $line);
}
return $raw;
}
/* *
* セッションのシリアル化解除
*
* @param string $data
* @return array
*/
関数unserialize_session( $data)
{
$vars = preg_split('/([a-zA -Z_x7f-xff][a-zA-Z0-9_x7f-xff^|]*)|/', $data, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
for ( $i = 0; $vars[ $i]; $i++)
{
$result[ $vars[ $i++]] = unserialize( $vars[ $i]);
}
$result を返す;
}