2012-10-25 18 views
0

我有一個noobie問題,讓我的頭腦如何能夠完成這項工作。序列化POST數組,以便能夠通過鏈接傳遞大量數據

我有一個頁面列出了我的數據庫中的產品。該網頁上有一個過濾器表單發送大量的數據來改進產品上市,即有多少結果每頁,排序順序,包含pricefrom,priceto加上亞類的數組

我也有一個尋呼系統哪個是哪個只有標準的zencart(splitpageresults::dsplaylinks)能夠顯示下一頁,上一頁和某些頁碼的鏈接。通常它會在鏈接結尾處通過參數$_GET,但我擁有所有這些我製作的奇特過濾器。

我的想法是序列化$_POST陣列中的鏈接將其作爲一個$_GET PARAM:

<a href="index.php&arr=<?php echo serialize($_POST[]);?>">nxt</a> 

,但是這似乎是壞的所有序列化和反序列化。

這樣做的最好方法是什麼?

我找不出來!

+1

更好地保存會話中的過濾器。可以通過url傳遞的數據量有限制。 – air4x

+0

啊對,好的。感謝你的回答。 –

回答

2

您可以刪除[]urlencode()序列化的數據:

<a href="index.php&arr=<?php echo urlencode(serialize($_POST));?>">nxt</a> 

但你最好使用sessions。請參閱manual

+0

謝謝,好主意,我以前從未用過它們,所以從來沒有想過! –

+0

不客氣! – Carlos

0

查看高級搜索和高級搜索結果頁面,查看使用POST處理大量數據的示例。

0

不是一個好主意,試試這個

/* View.php*/ 

    $image_arr=array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg"); 
    $serial_arr=urlencode(base64_encode(serialize($image_arr))); 

    echo '<a href="process.php?arr='.$serial_arr.'">Link</a>'; 



    /* process.php */ 
    $image_arr=unserialize(base64_decode(urldecode($_GET['arr']))); 

    foreach($image_arr as $value){ 
     /* do anything here 
     * just as an example 
     * https://gist.github.com/vdite/30644e28301916789ff5 
     */ 
    } 
0

恕我直言序列化()和反序列化()在$ _GET或$ _POST遠,主要有兩個方面,我能想到的:

  1. 安全
  2. 最佳實踐

有關安全方面的詳細信息,請查看斯蒂芬噝的OWASP介紹,第27頁 [PDF, owasp.org]。一般來說,並不像許多人希望我們相信的那麼戲劇化,但卻可能變成一個討厭的安全問題(如phpBB2,Zend等)。

最好的做法是使用JSON(json_encode和json_decode是更好的選擇)。藉助JSON,您可以執行更多基於標準的AJAX,以及用戶友好的JavaScript或基於jQuery的分頁或過濾器。