【问题标题】:Dealing with missing data on HTML form using PHP使用 PHP 处理 HTML 表单上的缺失数据
【发布时间】:2013-03-16 21:21:39
【问题描述】:

我正在创建一个 HTML,它有很多可选的输入字段。 PHP 服务器脚本获取用户输入的数据并基本上形成一个句子。

Hello my name is <?php echo $_POST["name"]; ?> and I am <?php echo $_POST["age"]; ?>

现在如果用户提交输入姓名和年龄的表单没有问题。但是,如果您省略一个或两个输入,PHP 输出会在句子中嵌入一条错误消息。我希望它通过简单地将区域留空来处理所有遗漏。

例子:

姓名:本
年龄:(空白)

你好,我叫 Ben,我是。

这可以实现吗?另外,有没有办法编写 if/else 语句,如果用户输入了任何值,请执行此操作?

谢谢!

【问题讨论】:

    标签: php html forms


    【解决方案1】:
    $name = (isset($_POST['name']) ? $_POST['name'] : '');
    $age = (isset($_POST['age']) ? $_POST['age'] : '');
    
    echo 'Hello, my name is ' . $name . ', and I am ' . $age . ' years old.';
    

    【讨论】:

      【解决方案2】:

      嗨,你应该使用 isset(),就像 Julian H 说的那样 如果设置了年龄,您可以在条件中使用它来制作不同的句子

      isset() 返回 TRUE 或 FALSE

      我为你做了这个(使用 _GET 但你可以使用 _POST,它更容易测试

      <?php
      
      $html = 'Hi, ';
      
      if(isset($_GET['name']) AND $_GET['name'] != '')
      {
          $html .= 'my name is '.strip_tags($_GET['name']).' ';
      }
      
      if(isset($_GET['name']) AND $_GET['name'] != '' AND isset($_GET['age']) AND $_GET['age'] != ''  )
      {
          $html .= 'and ';
      }
      
      if(isset($_GET['age']) AND $_GET['age'] != '' )
      {
          $html .= 'i am '.strip_tags($_GET['age']).' years old ';
      }
      
      echo $html;
      

      非常重要:我使用strip_tags()来删除html标签,避免XXS攻击

      所以我终于可以得到这些句子了:

      你好,我叫阿库奥

      大家好,我叫阿库奥,今年 23 岁

      你好,我今年 23 岁

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-07
        相关资源
        最近更新 更多