在 PHP 中处理 HTML 表单

无论是订阅电子邮件时事通讯还是提交联系表单,HTML 表单中的数据通常都会发送到服务器端脚本以供进一步处理。

使用 PHP ,我们可以通过 $_POST 和 $_GET 超全局变量轻松处理表单提交。

要返回特定输入字段的值,只需使用字段名称属性的值:

if (!empty($_POST['e-mail'])) {
  echo $_POST['e-mail'];
}

如果表单字段的名称未知,那么我们可以通过打印相关的超全局变量或者使用 foreach 循环遍历它来学习它们:

echo '<p>The submitted data were:</p>';
foreach($_POST as $key => $value) {
    echo 'Key: '. $key . '<br>  Value: ' . $value . '<br>';
}
echo '</pre>';

此处提供测试表单:HTML Form Tester

也不要忘记我们的老朋友 print_r :

print_r($_POST);

相同的方法可以用于 $_GET 超全局变量。

然而,扔球并接住它是一回事,接住球后还用球进球是另一回事。
这意味着,在使用我们的服务器端 PHP 脚本“捕获”数据后,通常很难对数据做一些有用的事情。

我们可以轻松地在 Web 浏览器中向用户显示数据,通常这就是我们在开发提交处理程序时想要的。
但是,通过电子邮件发送消息需要更多的工作。
在很多情况下,我们的网络主机已经准备了一些我们需要的东西,但在其他情况下,我们可能需要设置我们自己的电子邮件服务器,以便从 PHP 发送电子邮件。

下面的脚本将“捕获”任何表单提交的数据,并将其输出到网络浏览器。
这在开发新的表单提交处理程序和学习 PHP 中的 HTML 表单处理时很有用:

选择框和单选按钮

对于 HTML 单选按钮和复选框, value 属性的内容很少重要,我们可以使用 isset 简单地检查用户是否选中了该框:

if (isset($_POST['contact_me'])) {
  echo 'The contact_me checkbox was checked!';
} else {
  //Do something else
}
//The rest of your code

多个单选按钮可以共享相同的名称属性——但 ID 仍应保持唯一。

由于只会提交被选中的单选按钮的值,这允许我们通过查看 value 属性的内容来检查选择了哪个单选按钮(选项):

if (isset($_POST['selected_option'])) {
  echo 'You selected: ' . $_POST['selected_option'];
}

从 PHP 中捕获提交的表单数据

如何处理从 PHP 提交的数据将取决于我们正在处理的表单输入字段的类型。
文本字段将始终包含在内,即使它们是空的,这也使它们易于处理。
复选框和单选按钮需要特殊处理,因为它们只有在被选中时才会被包含在内。

然而,即使是复选框和单选按钮也可以轻松处理——我们只需要记住它们只有在选中时才会被包含在内。
知道了这一点,我们可以使用 isset 来测试是否选择了给定的复选框或者单选按钮。

我们可以使用 empty 函数检查是否填写了正常的表单字段,但我们应该记住还要验证内容以防止错误和注入攻击。
要检查文本字段是否已填写,请使用以下命令:

if(!empty($_POST['some_field_name'])) {
  echo 'Error: You need to fill out all required fields in the form!';
  exit();
}
//The rest of your code
echo 'Value of form field: ' . $_POST['some_field_name'];

$_POST 或者 $_GET 超全局变量中使用的键值包含在表单元素的 HTML 名称属性中。

日期:2020-06-02 22:17:23 来源:oir作者:oir