我设置了一些隐藏的表单输入,以获得序列化数组的值,如下例所示:
echo "<input type=\"hidden\" name=\"attName\" value=\"".htmlentities(serialize($attributeName))."\" />";
成功接收表单的脚本获取序列化数组。如果我打印出来:
echo "<p>".$_POST['attType']."</p>";
打印出来:
a:4:{i:0; s:13:\&#34;序列号\&#34 ;; i:1; s:5:\&#34;作品\&#34 ;; i:2; S:3:\&#34;根\&#34 ;; I:3; S:4:\&#34;测试\&#34 ;;}
这是有效的,似乎工作正常。
但是,如果我尝试反序列化它,似乎什么也没发生。这段代码:
$attName=$_POST['attName'];
echo $attName;
$attName=unserialize($attName);
echo "Array: ";
print_r($attName);
打印出来:
a:4:{i:0; s:13:\&#34;序列号\&#34 ;; i:1; s:5:\&#34;作品\&#34 ;; i:2; S:3:\&#34;根\&#34 ;; I:3; S:4:\&#34;测试\&#34 ;;}阵列:
出于某种原因,php无法对其进行反序列化。我尝试在第一页上使用表单序列化和反序列化数组,以尝试查找错误,但它运行正常。
最奇怪的是这个问题只发生在我的服务器上而不是我的MAMP测试环境中。
非常感谢任何帮助。
答案 0 :(得分:1)
magic_quotes_gpc是否开启? http://in1.php.net/manual/en/info.configuration.php#ini.magic-quotes-gpc
警告 自PHP 5.3.0起,此功能已被弃用,自PHP 5.4.0起已被删除。 设置GPC(Get / Post / Cookie)操作的magic_quotes状态。当magic_quotes打开时,所有' (单引号),“(双引号),\(反斜杠)和NUL用自动反斜杠&gt;进行转义。
如果已启用,则所有收到的表单发布数据都会使用“\”自动转义。建议您关闭magic_quotes_gpc。
答案 1 :(得分:0)
更改您的代码并使用stripslashes
$attName= stripslashes($_POST['attName']);
echo $attName;
$attName=unserialize($attName);
echo "Array: ";
print_r($attName);