提交空表单输入字段

时间:2013-01-03 08:17:19

标签: php input

我有几个输入字段,我希望它在只有一个字段输入值而其他字段为空(更新用户数据)时提交。我现在使用isset()工作,但这只在每个字段填写时发送表单:

if (isset
   ($_POST['submit']) AND 
   ($_POST['firstname']) AND 
   ($_POST['lastname']) AND 
   ($_POST['address']) AND 
   ($_POST['ZIP']) AND 
   ($_POST['phonenumber']) AND 
   ($_POST['mail']) AND 
   ($_POST['group'])
)

稍后我会检查邮件模板(另一个文件)是否有值,并且是否在邮件中显示:

{if !empty($firstname)}{translate text='First Name'}: {$firstname|escape} {/if}

我的想法是否正常或是否有更简单的方法来解决这个问题?

4 个答案:

答案 0 :(得分:1)

第一个 if 声明与您的要求相冲突;您需要使用 AND 操作填写所有字段 - 使用 OR ,它将适用于任何单个字段值。

应该/也可以使用jt作为Matt推荐的页面本身进行验证。

要确保只设置一个字段,请执行以下操作,以计算_POST

中的条目数
if(count($_POST) == 1 AND 
   (isset($_POST['submit']) OR 
    isset($_POST['firstname']) OR 
    isset($_POST['lastname']) OR 
    isset($_POST['address']) OR 
    isset($_POST['ZIP']) OR 
    isset($_POST['phonenumber']) OR 
    isset($_POST['mail']) OR 
    isset($_POST['group'])
   ))

无论哪种方式,这都不是一种非常优雅的方式 - 但它会起作用。

答案 1 :(得分:0)

除了服务器端检查之外,还有一个建议是在表单上使用javascriptonSubmit函数。使用它,您可以检查所有字段,并提醒用户在提交到服务器之前填写一些字段。

在javascript函数中检查所有输入以获得正确的输入,如果数据全部正确填充,则允许将数据发送到服务器,或者弹出警报,说明还需要做什么之后才能进行提交。

严格执行此检查服务器端将需要服务器请求每次检查输入,而不是让客户端检查它,并且只有在一切正确时才提交它。

答案 2 :(得分:0)

如果至少有一个字段已填满,假设您要发送表单,可以使用以下if语句:

if(count($_POST) > 1)

这允许您提交表单并至少填写一个字段,但您也可以填充更多字段。

如果您只想在填写了一个字段时发送表单,可以将上面的if语句更改为以下内容:

if(count($_POST) == 2)

这允许您只填充一个字段。 我使用“== 2”的原因是因为提交按钮也是将被发送的东西。

如果要允许所有字段为空,可以使用以下if语句:

if(count($_POST) > 0)

这将允许您提交按钮并将所有其他字段留空。

这可行的原因是因为$ _POST是一个预定义的数组变量。

为了确保用户只使用您希望他们使用的字段并保持代码清洁,您可以使用数组。

执行以下操作:

$allowed_fields = array('firstname','lastname','address','ZIP','phonenumber','mail','group');

然后只需在if语句中添加以下内容:

if(count($_POST) == 2 AND in_array($allowed_fields, $_POST))

答案 3 :(得分:0)

如果您只想要一个设置为必需字段的值(如果可能,请使用javascript,或HTML5具有required属性),只需忽略其他字段中的其他值:

<?php
     if ( isset( $_POST['submit'] ) ) {
         $wanted_value = addslashes( strip_tags( $_POST['input_name'] ) ); 
         // preventing from sql injection
         // ignore other values
         // and start manipulating it
     }
?>