我想我面临的问题很常见,但我没有在互联网上看到一个线程。
如果我使用isset($_POST)
,
- 它会永远回来
true
吗? - 响应是否取决于我使用的 PHP 版本?
- 是
$_POST
变量吗?(毕竟这是一个超级全局“变量”)。因为在 php.net 文档中,提到了
isset()
仅适用于变量,因为传递任何其他内容都会导致解析错误。
它会永远返回 true 吗?
是的,即使页面是使用GET
方法打开的,或者没有POST
编辑任何内容。
响应是否取决于我使用的 PHP 版本?
不,它没有(不确定非常旧的 PHP 版本)。
$_POST 是变量吗?
是的
isset() 仅适用于变量,因为传递其他任何内容都会导致解析错误。
手册中明确提到了这一点,这样人们就不会尝试做一些卑鄙的事情。例如,这些不起作用:
function getVarName() { return '_POST'; }
isset(getVarName());
isset('$_POST');
现在,您为什么要检查是否$_POST
已设置。也许想检查是否发布了某个变量(例如电子邮件),在这种情况下,您需要检查:
isset($_POST["email"])
isset($_POST);
将始终返回 true。如果您想检查它是否包含某些内容,请使用empty($_POST);
响应是否取决于我使用的 PHP 版本?
不
$_POST 是一个变量吗?
是的
我建议使用以下方法之一:
if($_POST){
}
if(!empty($_POST)){
}
1、它会一直返回true吗?
isset($_POST) 将始终返回 true。如果 $_POST 为空,它将返回 false。
2、响应是否取决于我使用的 PHP 版本?
我不确定 4.* 以下的版本,但响应始终相同。
3、$_POST是变量吗?
是的,它被认为是超全局的,例如:$GLOBALS、$_SESSION、$_POST、$_GET
无论您是否发布任何数据$_POST
,都将始终设置为数组。您可能正在寻找的是empty()
查看是否实际发布了任何数据的方法,例如:
if(!empty($_POST)) {
// POST data was set
}
Isset()
仅当它包含某个值时才返回 true(它可以是零 0)。如果它没有任何值,则返回 false。如果你想防止(0)使用
if(isset($_POST) && $_POST)
如果只有它具有非零值,这将是正确的
$_POST is global array
Response doesn't depend upon the version of PHP