【问题标题】:When can there be data in both $_GET and $_POST$_GET 和 $_POST 什么时候可以有数据
【发布时间】:2009-11-15 06:28:30
【问题描述】:

是否真的可以同时在 $_GET 和 $_POST 中获取数据?这与 $_REQUEST 中的内容有何关系?

【问题讨论】:

    标签: php


    【解决方案1】:

    是的,这是可能的。考虑如下形式:

    <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>
    

    提交此表单时,$_GET["a"] == "123"$_GET["b"] == "456"$_POST["a"] == "llama"$_POST["b"] == "duck"$_POST["go"] == "Submit me!"

    这与$_REQUEST 超全局的关系取决于request_order(或更旧的variables_order)PHP 配置设置的值,正如the php.ini documentation 所解释的那样。

    【讨论】:

    • 所以,这让我不用从办公桌上起身就能看到 123 只美洲驼和 456 只鸭子!很酷。
    • 很高兴为骆驼和鸭子提供帮助。 :)
    【解决方案2】:

    两者中肯定都有数据...考虑以下(非常简单的)页面:

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

    注意表单的action包含一个查询字符串,方法是post$_GET 包含查询字符串参数,$_POST 包含表单参数,$_REQUEST 包含来自两个数组的合并参数:

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

    查看request_order 以控制如何在$_REQUEST 中处理超全局变量。

    【讨论】:

      【解决方案3】:

      这是可能的。 request_order 或(如果未设置)variables_order 指令确定当在两者中设置键时哪个将在 $_REQUEST 中优先。

      【讨论】:

        【解决方案4】:

        这在 PHP 中是可能的,因为尽管名称不同,$_GET 和 $_POST 并不真正需要 GET 或 POST。

        • $_GET 包含解析为表单编码变量的查询字符串。
        • $_POST 包含解析为表单编码变量的请求正文

        实际的请求方法是什么并不重要——它可能是一个 PUT 并且那些超全局变量仍然会被填充。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-24
          • 2010-11-27
          • 1970-01-01
          • 1970-01-01
          • 2012-09-17
          • 1970-01-01
          相关资源
          最近更新 更多