2011-02-15 68 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長度。