2011-02-15 35 views
0
$subprompt = serialize($errors); 
      header('Location: landingpage.php?success=false&prompt=' . $prompt . '&subprompt=' . $subprompt); 

然后试图通过GET方法发送阵列,但无法反序列化

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

    $subprompt = $_GET['subprompt']; 

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

我得到的所有数据时,我赞同刚才$ _GET变量,但是当我尝试反序列化它,我什么也没得到;一个空白变量。

+0

不要加入这样的事情做得太过火 - 大多数浏览器对URL长度的限制(包括查询字符串)。几百个字符是可以的,但不要指望一个非常大的数组完整地通过 – 2011-02-15 18:30:50

回答

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); 
} 
1
$subprompt = urlencode(serialize($errors)); 
1

urlencode是为此目的而设计的。

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

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