29

我想知道如何检测 $_POST 是否设置。

现在我像这样检测它:

if(isset($_POST['value']))

但我不再看是否设置了值。基本上,任何 POST 都可以。

if(isset($_POST))

我不确定 PHP 如何处理这个问题。也许 isset($_POST) 总是返回 true,因为它是 PHP 全局的?

基本上,我该怎么做?

4

6 回答 6

63

尝试:

if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {}

检查您的脚本是否已发布。

如果传递了附加数据,$_POST则不会为空,否则将为空。

您可以使用empty方法检查它是否包含数据。

if ( !empty($_POST) ) {}
于 2013-03-05T09:55:06.410 回答
13

$_POST是一个数组。您可以检查:

count($_POST)

如果它大于零,则意味着发布了一些值。

于 2013-03-05T09:57:39.590 回答
3

一个简单的解决方案可能就是使用

if (!empty($_POST))
于 2013-03-05T09:55:58.163 回答
3

只需如下使用它。因为它super global所以在检查issetand时它总是返回 true empty

<?php
    if($_POST)
    {
        echo "yes";
    }
?>
于 2013-03-05T09:57:18.153 回答
2

我知道这个答案已经得到了回答,但这是我在我的一个课程中使用的一个简单方法来确定帖子是否已设置(也许有人会发现它很有用):

public function isPost($key = null) {

    if ($_SERVER['REQUEST_METHOD'] != 'POST') {

        return false;

    }

    if (!empty($key)) {

        return isset($_POST[$key]);

    }

    return true;

}
于 2013-10-18T15:16:04.110 回答
-1

检查 $_POST 的最佳方法

<?php 
if(count($_POST)){}
于 2017-04-04T15:40:40.010 回答