PHP序列化&;非序列化

PHP序列化&;非序列化,php,Php,我对Unserialize有问题,它从$\u POST获得后什么也不返回。我从一个表单发布了一个简单的数组,我可以看到双引号被添加到序列化字符串中。在序列化和取消序列化之前,我尝试了stripslashes,但结果是相同的,没有输出。我在php.ini中使用了magic_quotes_gpc,但还是没有运气。当我在unserialize中通过手动添加“\”对值进行硬编码时,得到了所需的字符串,因此我尝试使用addslashes,但仍然没有任何结果。请帮我解决这个问题 <?php $tm

我对Unserialize有问题,它从$\u POST获得后什么也不返回。我从一个表单发布了一个简单的数组,我可以看到双引号被添加到序列化字符串中。在序列化和取消序列化之前,我尝试了stripslashes,但结果是相同的,没有输出。我在php.ini中使用了magic_quotes_gpc,但还是没有运气。当我在unserialize中通过手动添加“\”对值进行硬编码时,得到了所需的字符串,因此我尝试使用addslashes,但仍然没有任何结果。请帮我解决这个问题

<?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>

这是打字错误吗

$tmp = $_POST["strVid"];

$myNewArray = unserialize($trp);

$trp
!=
$tmp

您是否尝试在序列化输入上使用urlencode

在您的代码中:

<input type="hidden" name="strVid" value="<?php echo $serialized; ?>">

取消序列化($trp)?也许是非序列化($tmp)?或者只是复制过去的错误?您确定双引号是添加到序列化字符串中的,而不是添加到
$\u POST
过程中的较早阶段吗?如果您可以在每个步骤发布输出(发送的内容,
$\u post['whatever']
序列化(…)
取消序列化(…)
,等等。这将有助于Jakub&Kakawait。这是一种类型,因为我尝试了太多的东西,有点愤怒。谢谢Jack,我做到了这一点,我松了一口气。我是php新手,刚刚开始自学。我几乎所有的学习都是通过这个论坛进行的,之前在这里回答了问题。非常感谢那些帮助我的人。
<input type="hidden" name="strVid" value="<?php echo htmlspecialchars($serialized, ENT_QUOTES, 'UTF-8'); ?>">
$myNewArray = unserialize($_POST["strVid"]);