反序列化已发布的PHP表单时出现问题

时间:2014-10-11 19:21:52

标签: php arrays post serialization

以下是表格中表格的单元格样本。

每个表行有多个相似的单元格,表格中可以有多行。

我想将每一行发布到不同的页面,然后能够遍历每一行。到目前为止,我已经为每个单元格写了这个:

<td><?php echo "$inkrementering";?><input type="hidden" name="historik[]" value="<?php echo serialize($inkrementering);?>"></td>
                    <?php 

             } 
             }
                ?>
    </tr>
</table>           
   <input type="submit" value="Gem træning" name="submit">
</form>

在收件人页面上,我有以下代码:

foreach ($_POST['historik'] as $historikArray)
   {
echo unserialize($historikArray)[3];    
   }

其目的是:

1)逐个循环遍历所有行

2)从每一行打印物品[3](仅作为示例......)

但是,我收到了错误: Notice: unserialize(): Error at offset 0 of 4 bytes

任何人都知道如何解决这个问题?

或者,也许我没有使用序列化......?

任何帮助表示赞赏! :)

1 个答案:

答案 0 :(得分:0)

您正在收到通知,因为序列化数据出现问题。你没有发布它,所以我不确定它是如何形成错误的......

  

也许我没有使用序列化

走在正确的轨道上

建议不要反序列化用户提交的数据。这是因为用户可能会更改类,而数据应该被反序列化,这可能会产生安全性后果(特别是如果定义了__wakeup()魔法方法)。

如果要封装复杂结构,可以使用JSON代替。这具有客户端和具有可以使用相同数据格式的本机功能的服务器的额外好处。