unserialize错误,偏移量为5个字节

Sha*_*512 6 php arrays serialization deserialization

我试图通过html格式的输入字段传递数组.使用序列化传递它然后反序列化再次读取数组.我有多个输入字段.

$test = array('name' => 'Sander', 'type' => 'melon');

echo '<input type="hidden" name="rank[]" value="'.serialize($test).'" >';
Run Code Online (Sandbox Code Playgroud)

然后,如果我想反序列化并显示数据,则会出错:

$list = $_POST['rank'];
var_dump($list);
var_dump(unserialize($list[0]));
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Nic*_*los 6

urlencode()在输出之前,您很可能需要传递序列化字符串.

要处理它,请使用urldecode()之前unserialize().


Sha*_*512 0

我不使用序列化,而是使用 urlencode() 和 urldecode()。

将数组更改为不同的格式。

$info = 'name=Sander&type=melon';

echo '<input type="hidden" name="rank[]" value="'.urlencode($info).'" >';
Run Code Online (Sandbox Code Playgroud)

然后我可以简单地显示这样的值:

if(!empty($_POST['rank'])){

    $list = $_POST['rank'];
    $listSize = count($list);

    for($i=0;$i<$listSize;$i++){

        parse_str(urldecode($list[$i]), $output);
        var_dump($output);  
    }

}
Run Code Online (Sandbox Code Playgroud)

问题解决了:)