2012-10-25 16 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的分页或过滤器。