使用PHP处理HTML表单上缺少的数据

时间:2013-03-15 23:35:24

标签: php html forms

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

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

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

示例:

姓名:本
年龄:(空白)

您好,我的名字是Ben,我是。

这可以实现吗?另外,有没有办法编写if / else语句,如果用户输入了任何值,那么这样做吗?

谢谢!

2 个答案:

答案 0 :(得分:8)

$name = (isset($_POST['name']) ? $_POST['name'] : '');
$age = (isset($_POST['age']) ? $_POST['age'] : '');

echo 'Hello, my name is ' . $name . ', and I am ' . $age . ' years old.';

答案 1 :(得分:0)

大家好,你应该像朱利安一样使用isset() 如果设定年龄,你可以在条件中使用它来制作不同的句子

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攻击

所以最后我可以得到这些句子:

你好,我叫Acuao

嗨,我叫Acuao,我23岁

嗨,我今年23岁