试图通过GET方法发送数组,但无法反序列化

时间:2011-02-15 17:55:57

标签: php

$subprompt = serialize($errors);
            header('Location: landingpage.php?success=false&prompt=' . $prompt . '&subprompt=' . $subprompt);

然后

if(isset($_GET['subprompt'])){

    $subprompt = $_GET['subprompt'];

    $subprompt = unserialize($subprompt);
print_r($subprompt);
}

当我回显$ _GET变量时,我得到所有数据,但是当我尝试反序列化时,我什么也得不到;一个空白变量。

4 个答案:

答案 0 :(得分:1)

$subprompt = urlencode(serialize($errors));

答案 1 :(得分:1)

urlencode就是为了这个目的。

$url_string = urlencode(serialize($errors));

答案 2 :(得分:0)

要避免编码问题,您应该将值发送为base64_encode(serialize($subprompt));。结果将是大约33%的字符串,因此请记住不要超过最大网址长度。

答案 3 :(得分:0)

试试这个: 除了urlencode之外,您还可以尝试base64编码数据。有点“漂亮”的网址:)

$subprompt = base64_encode(serialize($errors));
            header('Location: landingpage.php?success=false&prompt=' . $prompt . '&subprompt=' . $subprompt);

if(isset($_GET['subprompt'])){
    $subprompt = $_GET['subprompt'];
    $subprompt = unserialize(base64_decode($subprompt));
print_r($subprompt);
}