提交空表单输入字段



我有几个输入字段,我希望它提交时只有一个字段输入值和其他是空的(更新用户数据)。我现在使用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}

我的想法好吗?还是有更简单的方法来解决这个问题?

第一个if语句与您的要求冲突;您要求通过使用操作填充所有字段-使用,它将与任何单个字段值一起工作。

验证应该/也可以像Matt建议的那样使用javascript在页面本身执行。

要确保只设置了一个字段,请执行以下操作:您可以计算_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'])
   ))

不管怎样,这都不是一个很优雅的方式,但它会工作。

如果你想要一个字段的值被设置为必需的(如果可能的话,使用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
     }
?>

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

在javascript函数中检查所有输入是否正确,如果数据全部填写正确,则允许将数据发送到服务器,或者弹出警告,说明在提交之前还需要做什么。

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

假设您希望发送至少有一个字段已被填充的表单,您可以使用以下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))

相关内容

  • 没有找到相关文章

最新更新