如果相应的表单字段为空,我怎么能不在操作页面中包含一行?

时间:2017-11-07 13:12:24

标签: php forms

假设我有以下表单,其中输入字段Phone是可选的。

<form action="welcome.php" method="post">
   Name: <input type="text" name="name"><br>
   Phone (optional): <input type="text" name="phone"><br>
   E-mail: <input type="text" name="email"><br>
   <input type="submit">
</form>

我想在action页面中显示提交的数据。所以这里是welcome.php页面:

<html>
   <body>
      Welcome <?php echo $_POST["name"]; ?><br>
      Your phone number is: <?php echo $_POST["phone"]; ?>
      Your email address is: <?php echo $_POST["email"]; ?>
   </body>
</html>

我的问题是,如果用户未在表单中输入任何电话价值,我如何排除Your phone number is: <?php echo $_POST["phone"]; ?>部分?简单地说,如果用户将字段留空,则不会在操作页面中生成相应的句子。

实现这一目标的最佳方式是什么?

我只是想学习表单处理的不同方法。我会感激任何建议。提前谢谢。

3 个答案:

答案 0 :(得分:3)

只需添加一个检查变量是否为空的条件。 如果是,请打印所需的行。

<?php if(!empty($_POST['phone'])) {   
      echo 'Your phone number is: '. $_POST["phone"] . '<br />';
}
?>

注意:在打印输入数据之前,请考虑验证/转发输入数据。

更新 - 如果是多个字段:

$fields = array(
'phone' => 'This is my phone number',
'address' => 'I live at',
'zipcode' => 'And my zip code is:'
);

foreach($fields as $fieldname => $label){
  $value = $_POST[$fieldname]; //consider escaping/validating the value...
  if(!empty($value)){
     echo $label . ' ' . $value . '<Br />';
  }
}

答案 1 :(得分:1)

试试吧:

<html>
   <body>
      Welcome <?= $_POST["name"]; ?><br>
       <?= (!empty($_POST["phone"])) ? 'Your phone number is: ' . $_POST["phone"] : ''; ?>
      Your email address is: <?= $_POST["email"]; ?>
   </body>
</html>

这使用?: 三元运算符来确定$_POST["phone"]是否为空。当<?=在html标记内时,也可以<?php echo使用echo的简写。

警告

另外,请注意 XSS 使用htmlentities()来转义htmlentities($_POST["phone"])之类的输出,使用更具体的验证来过滤phoneemail字符串。

答案 2 :(得分:1)

检查帖子字段是否具有以下值:

<html>
   <body>
    <?php if(!empty($_POST['name'])) echo 'Welcome '. $_POST['name'] ?><br>
    <?php if(!empty($_POST["phone"])) echo 'Your phone number is: '. $_POST["phone"]; ?>
    <?php if(!empty($_POST["email"])) echo 'Your email address is: '. $_POST["email"]; ?>
   </body>
</html>