【发布时间】:2017-03-07 08:13:28
【问题描述】:
使用 PHP 5.5.9
我正在尝试将隐藏的序列化数组发送到表单。我将表单和操作脚本放在同一个文件中,使用
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
我在文件开头初始化数组:
<?php $sports = array("Basketball", "Football", "Handball");?>
我在表单中添加了一个确定按钮:
<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 数组是在文件的开头初始化的。为什么它没有被序列化? 还是我的问题依赖于反序列化代码?
【问题讨论】:
-
单独返回
$_POST['serializedData']是什么? -
第 1 步:去检查生成的 HTML 代码——这对你来说是不是看起来不对劲?第 2 步:研究您放入 HTML 上下文的数据需要如何转义。
标签: php forms serialization hidden-field