什么时候$ _GET和$ _POST都有数据

时间:2009-11-15 06:28:31

标签: php

实际上是否可以在$ _GET和$ _POST中获取数据?这与$ _REQUEST中的内容有什么关系?

4 个答案:

答案 0 :(得分:17)

是的,这是可能的。考虑一下这样的表格:

<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所解释的那样。

答案 1 :(得分: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中控制超全局值的处理。

答案 2 :(得分:1)

这是可能的。 request_order或(如果未设置)variables_order指令确定在$_REQUEST中当两个密钥都设置时,哪个优先于{{1}}。

答案 3 :(得分:0)

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

  • $ _ GET包含解析为表单编码变量的查询字符串。
  • $ _ POST包含解析为表单编码变量的请求体

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