POST
PHPに変換するフォームがありますGET
。
フォームが機能し、問題なく結果の最初のページが表示されます。
しかし、どうすれば2ページ目にリンクできますか?すべてのパラメーターを「次のページ」リンクとページ番号(スクリプトがすでに処理している)に複製する必要がGET
あると思いますが、どうすればよいですか?
明確化:GET
フォームからページ内のリンクに すべての変数を取得するにはどうすればよいですか?
POST
PHPに変換するフォームがありますGET
。
フォームが機能し、問題なく結果の最初のページが表示されます。
しかし、どうすれば2ページ目にリンクできますか?すべてのパラメーターを「次のページ」リンクとページ番号(スクリプトがすでに処理している)に複製する必要がGET
あると思いますが、どうすればよいですか?
明確化:GET
フォームからページ内のリンクに すべての変数を取得するにはどうすればよいですか?
最も簡単な方法は、次のようなことを行うことでもあります。
$get = preg_replace("/page=\d+/i", "", $_SERVER['QUERY_STRING']);
$link = "somepage.php?".$get."&page=".($_GET['page']+1);
echo "<a href='".$link."'>Next Page</a>";
これは、get文字列を取得し、ページを削除してから、ページを+1として追加し直すだけです。クエリ文字列で何かを渡す可能性があるため、これは安全ではないことに注意してください。より良いオプションは、予想される各$ _GET key => valueペアをチェックし、それを検証してから、リンク変数に追加することにより、URLを明示的に構築することです。そうすれば、クエリ文字列の追加ビットがページにエコーされません。
編集:
さて、ここに非常に簡単な例があります。
$category = (int)$_GET['cat'];
$keyword = trim($_GET['keyword']);
$keyword = filter_var($keyword, FILTER_SANITIZE_STRING);
$nextlink = "somepage.php?";
$nextlink .= http_build_query(array(
"cat" => $category,
"keyword" => $keyword,
"page" => $page+1
));
したがって、基本的には、必要なGET変数を取得し、それらを検証してから、http_build_queryと連想配列を使用してリンクのクエリ文字列を作成します。私が彼らに置いたセキュリティは非常に基本的ですが、数字を型キャストし、文字列に貼り付けることができるクラッドの量を制限することから始めます
ただじゃないURL?param1=val1¶m2=val2&...
ですか?
簡単に言えば、次のようにリクエストからそれらを読み取ることになります。
$link = 'mypage/?someitem=' . $_GET['someitem'] . '&page=' . ($page + 1);
ただし、パラメータにはHTMLインジェクションや、Webサイトを攻撃するように設計されたその他の厄介なトリックが含まれている可能性があるため、パラメータを信頼したくない場合があります。