PHP:以

时间:2016-10-25 10:15:14

标签: php forms serialization hidden-field

使用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数组在文件开头初始化。为什么不进行序列化? 或者我的问题是否依赖于反序列化代码?

1 个答案:

答案 0 :(得分:-1)

好的,我按照你的提示。 需要转换之前的htmlentities:

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