【问题标题】:unserialize Error at offset 5 of 9 bytes在 9 个字节的偏移量 5 处反序列化错误
【发布时间】:2013-04-20 12:31:12
【问题描述】:

我正在尝试通过 html 表单输入字段传递一个数组。 使用序列化传递它,然后反序列化再次读取数组。我有多个输入字段。

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

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

然后如果我想反序列化它并显示它会给出错误的数据:

$list = $_POST['rank'];
var_dump($list);
var_dump(unserialize($list[0]));

【问题讨论】:

标签: php arrays serialization deserialization


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    试试

     $list = urldecode($_GET['rank']);
    //var_dump($list);
    var_dump(unserialize($list));
    $test = array('name' => 'Sander', 'type' => 'melon');?>
    <form >
    <input type='hidden' name='rank' value='<?php echo serialize($test);?>' >
    <input type="submit" >
    </form>
    

    【讨论】:

    • 我用以下形式创建了一个字符串,而不是数组:“name=Sander&type=melon”。这有效!
    【解决方案3】:

    这是因为当你在 html 输入中添加序列化数据时,它会产生格式错误的 html 标签

    <input type="hidden" name="rank[]" value="a:2:{s:4:"name";s:6:"Sander";s:4:"type";s:5:"melon";}" >
    

    查看“展示位置。因此,您的帖子数据不完整

    var_dump($_POST['rank']);
    

    生产

    array(1) {
      [0]=>
      string(9) "a:2:{s:4:"
    }
    

    为什么不试试 json_encode 和 json_decode 呢?

    【讨论】:

    • JSON syntax 对字符串也使用双引号,您也必须使用 urlencode() 来防止这种情况下的行为。
    【解决方案4】:

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

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

    $info = 'name=Sander&type=melon';
    
    echo '<input type="hidden" name="rank[]" value="'.urlencode($info).'" >';
    

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

    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);  
        }
    
    }
    

    问题解决了 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      • 1970-01-01
      • 1970-01-01
      • 2016-04-11
      • 2018-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多