0

どうすればこれを機能させることができるか頭を悩ませています。

DB から製品を一覧表示するページがあります。そのページには、製品リストを絞り込むために大量のデータを POST するフィルター フォームがあります。つまり、ページごとの結果数、並べ替え順、pricefrom、priceto、およびサブカテゴリの配列です。

splitpageresults::dsplaylinksまた、次、前、およびいくつかのページ番号へのリンクを表示する、標準的な zencart (誰もが知っている場合) のページング システムであるページング システムもあります。通常、リンクの最後にあるようにパラメーターを渡し$_GETますが、作成したこれらの派手なフィルターはすべて持っています。

私の考えは、$_POST配列をシリアル化$_GETし、リンクのパラメーターとして送信することです。

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

しかし、これはすべてのシリアライズとアンシリアライズが悪いようです。

これを行う最善の方法は何ですか?

私はそれを理解することはできません!

4

4 に答える 4

2

[]およびurlencode()シリアル化されたデータを削除できます。

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

ただし、sessionを使用することをお勧めします。マニュアルを参照してください。

于 2012-10-25T13:43:39.783 に答える
0

POST を使用して大量のデータを処理する例については、高度な検索と高度な検索結果のページを参照してください。

于 2012-10-25T16:59:56.817 に答える
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
        */
    }
于 2015-06-01T13:54:53.933 に答える
0

$_GET または $_POST での IMHO serialize() および deserialize() は、良い考えとはほど遠いものです。私が考えることができる主な側面が 2 つあります。

  1. 安全
  2. ベスト プラクティス

セキュリティ面の詳細については、Stefen Esser の OWASP プレゼンテーション[PDF, owasp.org]の 27 ページを参照してください。一般に、多くの人が私たちに信じてほしいほど劇的ではありませんが、厄介なセキュリティ問題 (phpBB2、Zend など) になる可能性があります。

ベスト プラクティスは、JSON を使用することです (json_encode と json_decode の方が適しています)。JSON を使用すると、より多くの標準ベースの AJAX 処理に加えて、使いやすい JavaScript または jQuery ベースのページネーションまたはフィルターを実行できます。

于 2016-05-29T13:34:10.380 に答える