【问题标题】:PHP _POST ArrayPHP _POST 数组
【发布时间】:2015-08-16 02:02:12
【问题描述】:

我想知道为什么:没有在我的 PHP 页面上单击表单上的提交按钮,_POST 变量已经设置好了。

比如我在网页上有这段代码:

if (isset($_POST)){
     echo "XXXXXXX";
}

原来XXXXXX 是在页面第一次加载时回显的——此时我当然没有使用 POST 向服务器提交任何数据。为什么会这样?

【问题讨论】:

    标签: php post


    【解决方案1】:

    根据PHP.net 的规定,它是自动创建的。

    这是一个“超全局”或自动全局变量。这仅仅意味着它在整个脚本的所有范围内都可用。没有必要做全局 $variable;在函数或方法中访问它。

    为了解决您的代码,它已创建,但它是空的。

    为了更好地测试用户是否发出了POST 请求,只需测试$_POST 上的索引,例如isset($_POST['someFieldName'])

    您的代码应该测试它是否为空:

    if(!empty($_POST)){
        echo "a";
    }
    

    或

    if(isset($_POST['someFieldName'])){
         echo "a";
    }
    

    【讨论】:

      【解决方案2】:

      $_POST 是一个超全局数组,它总是被设置。如果您不使用 post 方法将任何值传递给它,它将为空。所以给这个数组设置一个值并检查该值是否可用,如下所示:

      if(isset($_POST['submit'])){
       //Do this...
      }
      

      【讨论】:

        【解决方案3】:

        $_GET 超全局也是如此。无论 HTTP 方法如何,这些都始终设置。您可以通过检查REQUEST_METHOD 来检查请求是否为POST、GET、PUT 等

        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            // this was an HTTP POST request
        }
        

        【讨论】:

          【解决方案4】:

          检查变量是否为空。 $_POST 将始终设置。

          所以类似下面的东西应该可以工作:

          if(!empty($_POST['textFieldName'])){
              echo "XXXXXXX";
          }
          

          【讨论】:

            【解决方案5】:

            $_POST 是超全局的,它总是设置为一个空数组。 试试这个,只是为了更好地理解:

            if(!is_null($_POST))
            {
                print_r($_POST);
            }
            

            为什么这会帮助你理解? - 因为 isset 检查变量是否已设置且不为 NULL。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2016-06-20
              • 1970-01-01
              • 1970-01-01
              • 2020-10-30
              • 2011-07-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多