0

POSTPHPに変換するフォームがありますGET

フォームが機能し、問題なく結果の最初のページが表示されます。

しかし、どうすれば2ページ目にリンクできますか?すべてのパラメーターを「次のページ」リンクとページ番号(スクリプトがすでに処理している)に複製する必要がGETあると思いますが、どうすればよいですか?

明確化:GETフォームからページ内のリンクに すべての変数を取得するにはどうすればよいですか?

4

3 に答える 3

2

最も簡単な方法は、次のようなことを行うことでもあります。

$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と連想配列を使用してリンクのクエリ文字列を作成します。私が彼らに置いたセキュリティは非常に基本的ですが、数字を型キャストし、文字列に貼り付けることができるクラッドの量を制限することから始めます

于 2012-06-07T15:26:46.523 に答える
0

ただじゃないURL?param1=val1&param2=val2&...ですか?

于 2012-06-07T15:24:14.090 に答える
0

簡単に言えば、次のようにリクエストからそれらを読み取ることになります。

$link = 'mypage/?someitem=' . $_GET['someitem'] . '&amp;page=' . ($page + 1);

ただし、パラメータにはHTMLインジェクションや、Webサイトを攻撃するように設計されたその他の厄介なトリックが含まれている可能性があるため、パラメータを信頼したくない場合があります。

于 2012-06-07T15:22:49.553 に答える