2

私はこの質問に対するこの答えを見つけましたhttps://stackoverflow.com/a/7244888/1473523、しかし私の状況では私は隠しフィールドを置くことができないので、PHPで無効な選択フィールドを投稿する方法はありませんか?

4

6 に答える 6

10

いいえ、それがフィールドを無効にすることです。値がサーバーにポストバックされないようにします。フィールドを無効にする場合は、変更できないため、その値を知っておく必要があります。値をポストバックする必要はありません。

値が他の入力に基づいて変化している場合は、その入力サーバー側をキャプチャし、それを使用して、クライアント側を選択する値を計算したのと同じ方法で、ポストバックされる値を計算する必要があります正確であるためにクライアント側の計算値に依存することは、重大なセキュリティ上の欠陥です。

フォームが投稿される前に何らかの方法でフィールドを有効にするか、非表示のフィールドを追加するかを選択できます。

于 2012-06-29T13:55:52.800 に答える
1

フォームを送信する直前に、javascriptで無効になっている属性を削除してみてください。

于 2012-06-29T13:56:25.033 に答える
0

あなたが投稿した質問から、これは無効化フィールドが作成される方法です:

<select class="txtbx1" name="country_disabled" disabled="disabled">

非表示にすることもできます。

<select class="txtbx1" name="country_disabled" type="hidden">
于 2012-06-29T13:56:26.203 に答える
0

このようなものをクライアントに依存しないでください。JSを無効にしたり、ブラウザの開発者ツールやFiddlerなどのツールを使用してリクエストを作成したりできます。

期待する値があるが、ユーザーが変更を許可されていない場合は、サーバーサイドに保持します。たとえば、セッションを使用します。

于 2012-06-29T13:57:27.403 に答える
0

無効なフィールドを投稿する方法はありません。それが意味をなさない場合です。

したがって、値が送信されないときにサーバー側でデフォルト値を定義するか、デフォルト値<input type="hidden" name="same_as_select" value="default" />を提供するために使用するかのいずれかで、フォームが有効になっている場合、フォームは常にデフォルト値を上書きします。

于 2012-06-29T13:57:41.620 に答える
0

いいえ、方法はありませんが、未定義のインデックス通知を防ぐために、そのフィールドが空であるかどうかをテストできます。

if(empty($_POST['select_name'])){ //or !isset()
  $disabled_select = 0; //or its default value
} else {
  $disabled_select = $_POST['select_name'];
}

私は単一行を使用することを好みます:

$disabled_select = empty($_POST['select_name']) ? 0 : $_POST['select_name'];
于 2015-12-03T21:53:38.680 に答える