无论是订阅电子邮件时事通讯还是提交联系表单,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 名称属性中。