1

私のページには3列のhtmlテーブルがあり、それぞれにこのようなフォームが含まれています

<form id="filter" method="get" action="advanced_search_result.php">
<input type="hidden" value="Aurum" name="keywords">
<select onchange="this.form.submit()" name="maxnumber">
<option value="">10</option>
<option selected="selected" value="25">25</option>
<option value="50">50</option>
</select>
</form>

ドロップダウン選択の結果は、この「advanced_search_result.php?keywords=Aurum&maxnumber=25」のような URL でリロードするページです。私の質問は....これらのクエリ文字列パラメーターはどのように構築されますか? 私はphpファイルを調べましたが、それを理解できません。私がやりたいことは、このアクションが発生したときに URL に別のパラメーターを追加することです。

4

3 に答える 3

3

それはphpとはまったく関係ありません。フォームでメソッドを使用しているgetため、すべてのフォームフィールドの名前/値がクエリパラメータとしてURLに詰め込まれます。

これは、ページがjava、asp、ruby、perl、またはプレーンな古い静的htmlで構築されている場合に発生します。

于 2013-03-12T16:24:43.740 に答える
2

これはHTTPプロトコルのデフォルトの動作であり、 GETPUTPOSTDELETEの4 つのアクションが可能 です。アクションを実行する言語ではありません。

REST と HTTP プロトコルの使用に関する最良の説明はHEREです。 このウィキペディアの記事には、HTTP で実行できるさまざまなタイプのリクエストに関する詳細情報も含まれています。

結論 そのフォーマットで URL を作成するのはプロトコルです。$_GETPHP には、最新のすべての Web 言語と同様に、配列、配列、配列$_POSTなどの URL 表現からパラメーターを抽出する方法を認識している HTTP ラッパー メソッドがあります$_REQUEST

知っておくべき 1 つのこと 冪等性 簡単に言えば、これはアクションに対して適切なタイプのリクエストを使用して、ブラウザーがより効率的な方法でジョブを実行できるようにすることを意味します。データベースの内容を単に表示するために POST を使用したり、データベースを更新するために GET を使用したりしませなんで?詳細はこちらをご覧ください。

冪等性の説明

べき等メソッドと Web アプリケーション

メソッド PUT と DELETE は冪等であると定義されています。つまり、複数の同一のリクエストが単一のリクエストと同じ効果を持つ必要があります (冪等とは、リクエストが完了した後のシステムの状態を指すことに注意してください。したがって、サーバーが実行するアクション (たとえば、レコードの削除) または返される応答コードは、後続の要求で異なる場合があり、システム状態は毎回同じになります)。

HTTP はステートレス プロトコルであるため、メソッド GET、HEAD、OPTIONS、および TRACE は、安全であると規定されていますが、冪等でなければなりません。1 対照的に、POST メソッドは必ずしもべき等ではないため、同じ POST リクエストを複数回送信すると、状態にさらに影響を与えたり、さらなる副作用 (金融取引など) を引き起こす可能性があります。

これが望ましい場合もありますが、ユーザーが自分のアクションが別のリクエストを送信する結果になることに気付いていない場合や、最初のリクエストが送信されたという適切なフィードバックをユーザーが受け取っていない場合など、事故が原因である可能性もあります。成功。Web ブラウザは、ページをリロードすると POST 要求が再送信される可能性がある場合にユーザーに警告するアラート ダイアログ ボックスを表示することがありますが、通常、POST 要求を複数回送信してはならない場合を処理するのは Web アプリケーション次第です。

メソッドがべき等かどうかは、プロトコルまたは Web サーバーによって強制されないことに注意してください。(たとえば) GET またはその他の要求によってデータベース挿入またはその他の非べき等アクションがトリガーされる Web アプリケーションを作成することは完全に可能です。ただし、この推奨事項を無視すると、望ましくない結果が生じる可能性があります。ユーザー エージェントが、同じ要求を繰り返すことが安全ではない場合でも安全であると想定している場合です。

于 2013-03-12T16:25:33.580 に答える
0

他の人が言ったように、パラメータの構築はGETPHP とは何の関係もありません。

それとは別に、新しいパラメータを追加したい場合は、フォームに新しい入力を追加するだけです:

<input type="text" name="param_name" value="the_value" />
于 2013-03-12T16:27:19.140 に答える