我有Unserialize问题,它从$ _POST获取后什么也不返回。我从一个表单发布一个简单的数组,我可以看到双引号被添加到序列化的字符串。在序列化之前和反序列化之前,我尝试了stripslashes,但结果与没有输出相同。我在php.ini中变成了magic_quotes_gpc,再次没有运气。当我通过手动添加“\”来硬编码值时,给我所需的字符串,所以我试着用addslashes并再次没有任何东西。请帮我解决这个问题。PHP序列化和反序列化
<?php
$tmp = $_POST["strVid"];
$myNewArray = unserialize($trp);
print_r($myNewArray);
$myArray = array('key1'=>'value1', 'key2'=>'value2');
$serialized = serialize($myArray);
?>
<form onsubmit="return validate(this)" action="test_serialize.php" method="post">
<input type="hidden" name="strVid1" value="this is mega shit"/>
<input type="hidden" name="strVid" value="<?php echo $serialized; ?>">
<input type="Submit" name="next" value="Next"/>
</form>
更新...
序列化后:一个:2:{S:4: “KEY1”; S:6: “VALUE1”; S:4: “KEY2”; S:6 : “VALUE2”;}
后序列化的的stripslashes:A:2:{S:4: “KEY1”; S:6: “VALUE1”; S:4: “KEY2”; S:6:“VALUE2 “;}
当添加手动\
$ myNewArray =反序列化(” A:2:{S:4:\ “KEY1 \”; S:6:\ “VALUE1 \”; S:4 :\“key2 \”; s:6:\“value2 \”;}“);
我得到的输出作为阵列([KEY1] =>值1 [KEY2] =>值2)
由于
反序列化($ TRP); ?也许反序列化($ tmp); ?或者只是复制过去的错误? – Kakawait
你确定双引号被添加到序列化的字符串,而不是在'$ _POST'的过程中?如果你可以在每一步发送输出(正在发送什么,'$ _POST ['whatever']','serialize(...)','unserialize(...)'等,这将有助于帮助 – jedwards