0

場合によっては、POST メソッドを使用してフォームでデータを送信するシステム (古いシステム) を確認していますが、get を使用しているかのようにパラメーターも URL に送信します。

このようなもの:

echo "\n<FORM METHOD='POST' NAME='onegroup' ACTION='menu.php?sesion=".$sesion."' >
    <INPUT TYPE='HIDDEN'    NAME='sesion'   VALUE='".$sesion."'>
    <INPUT TYPE='HIDDEN'    NAME='index_login'   VALUE='1'>
[...]   
</FORM>\n";

(注、sesionこれはタイプミスではなく、スペイン語で「セッション」という単語です)

" sesion" パラメータが URL と入力フィールドの両方から送信されるため、'session' 変数が$_POST配列と配列の両方で受信され$_GETます。

なぜこれが必要なのですか?そのままにしておく必要がありますか?$_POSTまたは、URLからそれを外して、データに頼ることができますか?

この回答のコメントを読みましたが、GET と POST の両方からデータを送信することは完全に可能であり、有効です (ただし、メソッド自体は GET または POST (またはその他) のいずれかですが、この場合は POST です。それが方法であるためです)。フォームが定義します)。この特定のケースでは、sesionget (url による) リクエストと post リクエストの両方で同じ変数 (つまり、同じ値) を送信する必要があるのはなぜでしょうか?

$_POST私の menu.php スクリプトでは、 と の両方を読み取ることができ$_GET、それぞれに変数の「バージョン」がありますが、たまたま同じです。$_POST の代わりに、または配列を$_GET読み取ると、$_REQUESTすべての変数がまとめて取得されますが、複製されたもの ( sesion) の場合は、投稿バージョンが優先されます。

もう 1 つのことは、「Register Globals」オプションに依存しているため、明示的に$_GET["sesion"]or $_POST["sesion"] (または$_REQUEST[]) を使用する代わりに、どこでも '$session' を使用してその情報を使用することです (リクエスト内の他の変数についても同じです)。 )。繰り返しますが、いじってみると、その場合、変数の POST バージョンも優先されることがわかります。しかし、私はいつもそれに頼ることができますか?

post メソッドを使用して、URL からパラメーターを削除する必要がありますか?

すべてを郵送する代わりに、なぜ彼らはこれをしたいのでしょうか? 私が見たように、特に両方が同じ値を持っているため、両方を使用する理由はありません。そうでない場合は、使用するバージョンを選択するだけで済みますが、そうではありません。それが単にそこに残され、決して「修正」されていないということは他に考えられません。

POST リクエストと GET リクエストの両方で、特に両方で同じ変数名を使用して、誰かがそのようなシナリオを使用する必要がある「実際の」例は何ですか?

ありがとう。

4

2 に答える 2