我对 Unserialize 有问题,它在从 $_POST 获取它后什么都不返回。我从表单中发布了一个简单的数组,我可以看到在序列化字符串中添加了双引号。我在序列化和反序列化之前尝试了stripslashes,但结果是一样的,没有输出。我已经在 php.ini 中关闭了 magic_quotes_gpc,但又没有运气。当我通过手动添加“\”对反序列化中的值进行硬编码时,给了我所需的字符串,所以我尝试了添加斜杠,但又一无所获。请帮我解决这个问题。
<?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>
更新...
序列化后:a: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 = unserialize("a:2:{s:4:\"key1\";s:6:\"value1\";s:4:\"key2\";s:6:\"value2\" ;} ");
我将输出作为数组( [key1] => value1 [key2] => value2 )
谢谢