2009-11-15 25 views
7

実際に$ _GETと$ _POSTの両方でデータを取得できますか?そして、これは$ _REQUESTにあるものとどのように関連していますか?

答えて

16

はい、可能です。このフォーム、$_GET["a"] == "123"$_GET["b"] == "456"$_POST["a"] == "llama"$_POST["b"] == "duck"、および$_POST["go"] == "Submit me!"を提出するには

<form action="foobar.php?a=123&b=456" method="post"> 
    <input type="text" name="a" value="llama"> 
    <input type="text" name="b" value="duck"> 
    <input type="submit" name="go" value="Submit me!"> 
</form> 

:このようなフォームを考えてみましょう。 the php.ini documentationが説明するように、これは$_REQUESTスーパーグローバルにどのように関連するか

は、request_order(または古いvariables_order)PHPの設定の値に依存します。

+0

だから、私の机から立ち上がることなく、123のラマと456のアヒルを見ることができます!クール。 – Don

+0

ラマとアヒルについては助けてください。 :) – bcat

1

可能です。 request_orderまたは(設定されていない場合)variables_orderディレクティブは、どちらのキーにもキーが設定されている場合、どちらが優先されるかを$_REQUESTで決定します。

2

間違いなく両方のデータがある場合もあります...(非常にシンプルな)次のページ考えてみましょう:フォームのactionは、クエリ文字列が含まれており、この方法はpostであること

<body> 
    <form method="post" action="params.php?myparam=myval"> 
    <input type="text" name="param1"></input> 
    <input type="submit" name="submit" value="submit" /> 
    </form> 
</body> 

お知らせ。 $_GET$_POSTがフォームのparamsが含まれている、クエリ文字列のparamsを含み、$_REQUESTは両方のアレイからマージされたパラメータが含まれています。スーパーグローバルは$_REQUESTで処理される方法を制御するための

array(3) { 
    ["myparam"]=> 
    string(1) "myval" 
    ["param1"]=> 
    string(0) "" 
    ["submit"]=> 
    string(6) "submit" 
} 

チェックアウトrequest_order

0

$ _GETと$ _POSTの名前にもかかわらず、実際にはGETやPOSTは必要ないので、PHPで可能です。

  • $ _GETには、フォームエンコードされた変数として解析されたクエリー文字列が含まれています。
  • $ _POSTは形式でエンコードされた変数

実際のリクエストメソッドが何であるかは重要ではありませんとして解析リクエストボディが含まれている - それは置くことができ、それらのスーパーグローバルはまだ読み込まれますでしょう。

関連する問題