2011-03-03 95 views
1

我有一个包含多个元素的表单。当他们提交表单时,我想使用$ _POST来查看已选择的值。现在,是否有可能使它只有在选择不是0时才真正被“发布”,因为0是默认值,如果它是0,他们实际上并没有选择任何东西?或者我必须通过整个$ _POST数组来查看哪些是非零的?

我不知道我希望在$ _POST数组中访问哪些元素。我只希望我的表单提交页面(进入action =“”部分的页面)知道有非零选择的字段。这可能吗?谢谢!

+1

据我所知,这是不可能的,但是你应该能够在表单被提交之前/时删除默认值,以便不会提交没有被更改的默认值。我不太确定如何做到这一点。也许尝试搜索:“在提交之前更改默认表单值”或者当您收到这些变量时,使用PHP,您可以简单地忽略默认值并且不对其执行任何操作。你能提供一些代码吗,它可以帮助我们更好地帮助你。 :) – 2011-03-03 20:22:16

+0

在PHP端忽略它们会更好/更容易/更聪明,而不是试图在客户端过滤它们。 – drudge 2011-03-03 20:31:29

回答

0

他们提交给你的PHP脚本之前,你可以在一些JavaScript(jQuery的)添加,去掉你的所有形式的输入无效

+0

在将它们提交给我的php表单之前,我该如何截取它? – ConfusedPhpNewb 2011-03-03 20:21:07

+1

很糟糕,因为JavaScript可能无法运行。你不能相信来自浏览器的数据将会处于你想要的格式。 – Quentin 2011-03-03 20:22:30

+2

通过绑定表单的'submit'事件。当然,如果用户禁用JavaScript或阻止脚本,这意味着您仍然需要编写PHP代码来处理整个表单。您不会通过JavaScript修改表单来节省任何代码。 – 2011-03-03 20:22:59

5

当环境脚本执行开始之前成立$_POST号填充,所以你不控制它的初始内容。它将包含所有的表单数据。

如果你不知道哪些元素将会在那里,只是循环所有元素。您也可以轻松地从代码中删除数组中的0:

foreach ($_POST as $key => $value) { 
    if ($value == 0) { 
     unset($_POST[$key]); 
    } 
} 
0

您将取决于客户端表单过滤,这是完全不可靠的。除了每场浪费几个字节的带宽之外,发送到服务器的“归零”字段有什么问题?