PHP:序列化/反序列化表单中的隐藏数组


PHP: Serializing/Deserializing hidden array in form

使用PHP 5.5.9

我试图发送一个隐藏的序列化数组到一个表单。我将表单和动作脚本放在同一个文件中,使用

 <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">

我在文件开头初始化数组:

 <?php $sports = array("Basketball", "Football", "Handball");?>

我添加了一个ok按钮到我的表单:

 <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
    <input type="hidden" name="serializedData" value="<?php echo serialize($sports);?>">
    <input type="submit" name="okButton" value="OK"><br>
</form>

现在,当用户按下ok按钮时,我试图反序列化隐藏的数组。我还想让代码打印数组

的内容
if(isset($_POST['okButton'])) {
   $sports_new = unserialize($_POST['serializedData']);
   // Show array
   for($i = 0; $i < count($sports_new); $i++) {
                    print $sports_new[$i]."<br/>";
   }       

但是没有显示。我猜我的表单的输入隐藏元素没有得到任何数据。但是$sports数组是在文件开头初始化的。为什么没有连载?还是我的问题依赖于反序列化代码?

好的,我听你的。需要转换htmlentities之前:

 <input type="hidden" name="serializedData" value="<?php echo htmlentities(serialize($sports));?>">