isset($ _ POST)是否正确使用?

时间:2012-12-26 09:51:42

标签: php post

我想面对的问题很常见,但我没有看到互联网上的单个帖子。

如果我使用isset($_POST)

  1. 它总是会返回true吗?
  2. 响应是否取决于我使用的PHP版本?
  3. $_POST是变量吗? (毕竟,这是一个超级全球'变量'。因为在php.net文档中,提到了
  4. isset()仅适用于变量,因为传递任何其他内容都会导致解析错误。

6 个答案:

答案 0 :(得分:4)

  

它会永远回归吗?

是的,即使使用GET方法打开了网页,也没有任何内容被POST编辑。

  

响应是否取决于我使用的PHP版本?

不是没有(不确定PHP的旧版本)。

  

$ _POST是变量吗?

  

isset()仅适用于变量,因为传递任何其他内容都会导致解析错误。

这在手册中明确提到,以便人们不要尝试做 cheaky 的东西。例如,这些不起作用:

function getVarName() { return '_POST'; }
isset(getVarName());
isset('$_POST');

现在,您为什么要检查是否设置了$_POST。也许想要检查是否发布了某个变量(例如电子邮件),在这种情况下您需要检查:

isset($_POST["email"])

答案 1 :(得分:1)

isset($_POST);将始终返回true。如果您想检查它是否包含某些内容,请使用empty($_POST);

  

响应是否取决于我使用的PHP版本?

没有

  

$ _POST是变量吗?

答案 2 :(得分:1)

我建议使用以下其中一项:

if($_POST){

}
if(!empty($_POST)){

}

1,它会永远归还吗?

  

isset($ _ POST)将始终返回true。如果$ _POST为空,则返回false。

2,响应是否取决于我使用的PHP版本?

  

我不确定4. *以下的版本。但是响应总是一样的。

3,$ _POST是变量吗?

  

是的,它被认为是超级全局,如:$ GLOBALS,$ _SESSION,$ _POST,$ _GET

答案 3 :(得分:1)

您是否发布了任何数据$_POST将始终设置为数组。您可能正在寻找的是empty()方法,以查看是否实际发布了任何数据,例如:

if(!empty($_POST)) {
    // POST data was set
}

答案 4 :(得分:0)

  • 它会永远回归真实吗?

是的,它永远是真的

  • 响应是否取决于我使用的PHP版本?

未在PHP 4.3.0 - 5.4.10

上测试过
  • $_POST是变量吗?

绝对是

验证$_POST的更好方法是使用empty

答案 5 :(得分:0)

Isset()

仅当它包含某个值时才返回true(它可以是Zero 0)。 如果它没有任何值,则返回false。 如果你想阻止(0)使用

if(isset($_POST) && $_POST) 

如果只有非零值

,则为真
$_POST is global array

Response doesn't depend upon the version of PHP