1

クライアントにソースコードがなく、サーバーへのアクセスが失われているRESTAPIの再実装に取り​​組んでいます...

発信者が投稿を送信しているのに、投稿されたデータがないことがわかりました。すべてのパラメーターは、URLで指定されているか、投稿フォームの場合のアクションはどうなりますか。

そのようです:

"POST http://foo.com/api/rest/?method=users.add_user&token=foo&section=bar&group=baz HTTP/1.1" 200 605 "-" "-" 

驚いたことに、これらのパラメーターは$_GETにも$_POSTにもありませんが、$_REQUESTでのみ使用できます。

ここで何かが足りませんか?アクセスされるURLの一部として$_GETに含まれないのはなぜですか?明白な答えは「これはPOSTであるため、GETは定義されていない」ということです。

誰かがそれらのスーパーグローバルの私の誤解について私を教育することができますか?

4

1 に答える 1

2

$_GETと$_POSTは、POSTプロトコルを使用しているため空ですが、変数をGETメソッドを介して送信しています(URLにエンコードしています)。

PHPは使用されているPOSTメソッドを検出しているため、$ _ GET変数の情報を何も設定せず、フォームのPOSTデータで送信された変数を$ _POST変数に解析します。つまり、何もありません。

一方、$ _ REQUEST変数は別のメカニズムで動作し、Cookie、マルチパートデータ、投稿、取得などからのものであるかどうかに関係なく、リクエストからのすべての変数を解析します。

通常、スクリプトとアプリケーションは$ _REQUESTデータを処理します。これは、すべてのデータのはるかに簡潔なコレクションであり、技術的には同じリクエストにGETデータとPOSTデータを含めることができないため、間の衝突について心配する必要がないためです。データセット。

于 2012-02-16T17:55:08.457 に答える