1

我想我面临的问题很常见,但我没有在互联网上看到一个线程。

如果我使用isset($_POST)

  1. 它会永远回来true吗?
  2. 响应是否取决于我使用的 PHP 版本?
  3. $_POST变量吗?(毕竟这是一个超级全局“变量”)。因为在 php.net 文档中,提到了

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

4

6 回答 6

4

它会永远返回 true 吗?

是的,即使页面是使用GET方法打开的,或者没有POST编辑任何内容。

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

不,它没有(不确定非常旧的 PHP 版本)。

$_POST 是变量吗?

是的

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

手册中明确提到了这一点,这样人们就不会尝试做一些卑鄙的事情。例如,这些不起作用:

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

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

isset($_POST["email"])
于 2012-12-26T09:55:18.137 回答
1

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

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

$_POST 是一个变量吗?

是的

于 2012-12-26T09:55:47.013 回答
1

我建议使用以下方法之一:

if($_POST){

}
if(!empty($_POST)){

}

1、它会一直返回true吗?

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

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

我不确定 4.* 以下的版本,但响应始终相同。

3、$_POST是变量吗?

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

于 2012-12-26T09:56:08.620 回答
1

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

if(!empty($_POST)) {
    // POST data was set
}
于 2012-12-26T09:56:19.713 回答
0
  • 它会永远返回 true 吗?

是的,它永远都是真的

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

未在PHP 4.3.0 - 5.4.10上测试

  • $_POST变量吗?

绝对是

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

于 2012-12-26T09:59:11.063 回答
0
Isset()

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

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

如果只有它具有非零值,这将是正确的

$_POST is global array

Response doesn't depend upon the version of PHP
于 2012-12-26T10:00:58.293 回答