isset($_POST)的用法是否正确



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

如果我使用isset($_POST)

  1. 它总是返回true
  2. 响应是否取决于我使用的PHP版本
  3. $_POST是一个变量吗?(毕竟这是一个超全局的"变量"(。因为在php.net文档中

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

它总是会变成真的吗?

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

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

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

$_POST是一个变量吗?

isset((只处理变量,因为传递任何其他内容都会导致解析错误。

手册中明确提到了这一点,这样人们就不会试图做cheaky的事情。例如:

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

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

isset($_POST["email"])

isset($_POST);将始终返回true。如果你想检查它是否包含什么,请使用empty($_POST);

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

$_POST是一个变量吗?

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

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

我建议使用以下选项之一:

if($_POST){
}
if(!empty($_POST)){
}

1、它总是会返回真的吗?

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

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

我不确定4.*以下的版本,但反响一直都是一样的。

3、$_POST是一个变量吗?

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

  • 它总是会变成真的吗

是的,这将永远是真正的

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

未在PHP 4.3.0-5.4.10 上进行测试

  • $_POST是一个变量吗

肯定是

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

Isset()

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

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

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

$_POST is global array
Response doesn't depend upon the version of PHP

最新更新