-1

php と mysql で検索フォームを作成し、ページネーションを行おうとしています。

だから私は次のようなフォームを持っています:

<form action="search_results.php" method="post">
                        <select name="cat" id="cat">
                            <option>Select Category</option>
                            <?php
                            foreach($categories as $category) {
                            echo "<option value=\"{$category -> name}\">{$category -> name}</option>";
                            }
                            ?>
                        </select>
                        <select name="sub-cat" id="sub-cat">
                            <option>Select Sub Category</option>
                        </select>
                        <label>Price Range</label>
                        <input type="text" name="from" placeholder="From" />
                        <input type="text" name="to" placeholder="To" />
                        <input type="submit" value="" name="submit" />
                    </form>

私の問題は、search_result.php の最初のページを取得することです。

2番目のページに移動しようとすると、 $_POST['submit'] は送信されなかったため設定されませんでした

誰もがこの問題を解決する方法を知っています

前もって感謝します。

4

2 に答える 2

2

この場合、指定したまさにその理由から、フォームと後続のページネーション リンクにはおそらく GET を使用する必要があります。

POST は、GET がフィルタリングおよびハッキング可能なリソースのリクエストである場合に、1 回限りのアクションとして使用することをお勧めします。

search_results.php?cat=1&sub-cat=2&page=2

search_results.php?cat=1&sub-cat=2&page=3

search_results.php?cat=1&sub-cat=2&page=4

search_results.php?cat=1&sub-cat=2&page=5
于 2012-04-09T21:43:40.170 に答える
0

最も簡単な方法は、クエリ文字列に検索情報を含む「次」と「前」の URL を生成し、受信ページに $_POST ではなく $_GET からそれらを読み取らせることです。$_GET 配列は、URL で渡された変数に対してのみ、$_POST 配列とまったく同じように機能します。

もう 1 つのオプションは、検索情報が非表示フィールドに存在するフォームを作成し、javascript を使用して「次へ」および「前へ」のリンクで取得するページの値を変更し、フォームを送信することです。これにより、現在使用しているのとまったく同じ POST ベースのコードを使用できますが、ユーザーが検索ページをブックマークできなくなり、その他の意図しない効果が生じる可能性があります。

于 2012-04-09T21:47:51.180 に答える