我有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