确定是否提交了空$ _POST

时间:2011-09-14 23:08:20

标签: php

我有一个包含表格数据的表单,每行都有一个具有相同名称的复选框,以便它作为数组通过POST传递给PHP页面。一切正常,但我有一个问题,关于什么时候没有选择页面上的项目 - 这是一个特殊情况,我需要以特定的方式处理,但我想弄清楚如何确定最佳方式判断这种情况何时发生,就像$_POST数组完全是空的一样。

有哪些策略可以帮助确定何时将一组空数据发布到PHP中的页面?

9 个答案:

答案 0 :(得分:8)

使用empty功能

if( empty($_POST) ) {
//do empty $_POST stuff here
}

答案 1 :(得分:4)

您可以通过几种不同的方式完成此任务。

//Method 1
if($_POST) {
//Do Stuff
}

//Method 2
if(!empty($_POST)) {
//Do Stuff
}

//Method 3 - For detecting if a form was submitted
<input type="submit" name="submit" />
if(sizeof($_POST)>1) {
//Do Stuff
}

如果您的值为0,方法2将失败,对于您不必担心的复选框。

方法3依赖于您为提交按钮指定名称,因此至少在未选中任何内容时提交。然后,您可以查看sizeof()是否返回超过1,以查看是否已检查任何内容。

DEMO: http://wecodesign.com/demos/stackoverflow-7424062.php

答案 2 :(得分:4)

使用已知值向页面添加隐藏的输入字段。此字段将始终与POST数据一起传递,因此您将知道用户通过表单提交而不是直接URL登陆。它很简单: -

&lt; input type ='hidden'name ='posted'value ='true'&gt;

答案 3 :(得分:2)

我想你已回答了自己的问题。如果$_POST数组为空,则没有选中的复选框。

答案 4 :(得分:2)

<form>
<input type="text" name="user" value="" />
<input type="submit" name="post" value="Save" />
</form>

//php
if (isset($_POST['post']))
{
   //code here
}

答案 5 :(得分:0)

if ( !empty( $_POST["field"] ) ) {
    // Field sent
} else {
    // Field empty
}

答案 6 :(得分:0)

(count($_POST) == 0) //returns boolean

或者您的意思是何时张贴表格但没有输入信息?

答案 7 :(得分:0)

提交表单时可以使用发布数据。鉴于以下内容:

if($_POST)
{
    // Bar
}

// Foo

如果表单未提交,则会执行Foo

如果表单已提交,则会执行Bar,然后Foo

鉴于以下内容:

if ($_POST)
{
    // Bar
}
else
{
    // Foo
}

如果表单未提交,则会执行Foo

如果表单已提交,则会执行Bar

至于您的其他问题,检查空数据或适当数据是基本的服务器端表单验证。如果您使用的库可以像以下一样简单:

if ($_POST)
{
    $form_helper = new FormHelper();

    $form_helper->validate($_POST["email"], "email");
    $form_helper->validate($_POST["password"], "password");

    if (! $form_helper->notifications())
    {
        // Bar
    }
}

对于您的特定情况(并且没有库),它可能是:

if ($_POST)
{
    if (empty($_POST["checklist"])
    {
        // Delete all entries.
    }
    else
    {
        // Do something else.
    }

    // Foo
}

答案 8 :(得分:0)

这将检查是否输入了任何表格值 - 假设默认输入值=&#39;&#39;

$ post = array_filter($ _ POST,&#39; strlen&#39;); //过滤所有空值

//if html input submit button has NO name value       
if (sizeof($post)):
      //Do stuff
    endif;

// OR if html input submit button HAS a name value
    if (sizeof($post) > 1):
      //Do stuff
    endif;

如果需要精确过滤,您可以使用回调函数

$post = array_filter($_POST,function ($k){ return $k != '' || $k != 'my default value' || *some other condition etc etc* ; });