使用 GET、POST 方法的 PHP 注册表单示例
⚡ 智能摘要
PHP 中的表单处理通过 `$_POST` 和 `$_GET` 全局变量从 HTML 表单中获取用户输入并在服务器端进行处理。本教程将构建一个注册表单,解释 POST 和 GET 方法,比较它们,并演示如何处理字段、复选框和搜索输入。
什么是表格?
当你登录网站或邮箱时,你就是在与表单进行交互。
表单用于获取用户的输入并将其提交给 Web 服务器进行处理。
下图说明了表单处理过程。
表单是一种 HTML 标签,其中包含图形用户界面元素,例如输入框、复选框、单选按钮等。
该表单是使用以下方式定义的: …标签和 GUI 项目是使用表单元素(例如输入框)定义的。
我们何时以及为何使用表格?
- 表单在开发过程中非常有用ping 能够接受用户输入的灵活、动态的应用程序。
- 可以使用表单编辑数据库中已有的数据。
建立表格
我们将使用 HTML 标签来创建表单。以下是创建表单所需的最少内容列表。
- 打开和关闭表单标签…
- 表单提交类型 POST 或 GET
- . URL 它将处理提交的数据
- 输入字段,例如输入框、文本区域、按钮、复选框等。
以下代码创建了一个简单的注册表单。
<html> <head> <title>Registration Form</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <h2>Registration Form</h2> <form action="registration_form.php" method="POST"> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> </body> </html>
在网络浏览器中查看上述代码将显示以下表单。
这里,
- …是开始和结束表格标签
- action=”registration_form.php” method=”POST” 指定目标 URL 以及提交类型。
- 名字/姓氏:输入框的标签
- 是输入框标签
- 是新行标签
- 是一个隐藏值,用于检查表单是否已提交
- 点击此按钮,即可将表单提交到服务器进行处理。
将表单数据提交到服务器
表单的 action 属性指定提交操作。 URL 处理数据的函数。method 属性指定提交类型。
PHP POST 方法
- 这是 PHP 内置的超全局数组变量,用于获取通过 HTTP POST 方法提交的值。
- 数组变量可以从程序中的任何脚本访问;它具有全局作用域。
- 当您不想在表单中显示表单提交值时,此方法非常理想。 URL.
- 使用 POST 方法的一个很好的例子是向服务器提交登录信息。
它具有以下语法。
<?php
$_POST['variable_name'];
?>
这里,
- “$_POST[…]” 是 PHP 数组
- “'variable_name'”是表单字段名称。
PHP GET 方法
- 这是 PHP 内置的超全局数组变量,用于获取通过 HTTP GET 方法提交的值。
- 数组变量可以从程序中的任何脚本访问;它具有全局作用域。
- 此方法会将表单值显示在屏幕上。 URL.
- 它非常适合搜索引擎表单,因为它允许用户将搜索结果添加到书签。
它具有以下语法。
<?php
$_GET['variable_name'];
?>
这里,
- “$_GET[…]” 是 PHP 数组
- “'variable_name'”是 URL 变量名。
GET 与 POST 方法
| 解决方案&帖子 | 的GET |
|---|---|
| 数值不可见 URL | 可见值 URL |
| 由于值是通过 HTTP 请求正文提交的,因此对值的长度没有限制。 | 对数值长度有限制,通常为 255 个字符。这是因为数值要显示在屏幕上。 URL请注意,字符上限取决于浏览器。 |
| 由于需要花费时间将 POST 值封装到 HTTP 请求体中,因此其性能低于 GET 方法。 | 由于其将值附加到数据框中的简单方式,与 POST 方法相比,性能更高。 URL. |
| 支持多种不同的数据类型,例如字符串、数值、二进制等。 | 仅支持字符串数据类型,因为值会显示在字符串中。 URL |
| 结果无法收藏。 | 由于结果中数值的可见性,因此可以将其添加到书签。 URL |
下图显示了 GET 和 POST 之间的区别。
处理注册表单数据
注册表单按照表单的action属性所指定的方式向其自身提交数据。
表单提交后,值会被填充到 $_POST 超全局数组中。
我们将使用 PHP isset 函数检查表单值是否已填入 $_POST 数组并处理数据。
我们将修改注册表单,使其包含处理数据的 PHP 代码。以下是修改后的代码。
<html> <head> <title>Registration Form</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php if (isset($_POST['form_submitted'])): ?> // this code is executed when the form is submitted <h2>Thank You <?php echo $_POST['firstname']; ?> </h2> <p>You have been registered as <?php echo $_POST['firstname'] . ' ' . $_POST['lastname']; ?> </p> <p>Go <a href="/registration_form.php">back</a> to the form</p> <?php else: ?> <h2>Registration Form</h2> <form action="registration_form.php" method="POST"> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> <?php endif; ?> </body> </html>
这里,
- 检查 `$_POST[]` 数组中 `form_submitted` 隐藏字段是否已填写,如果已填写,则显示感谢信息和姓名。如果 `$_POST[]` 数组中 `form_submitted` 字段未填写,则显示表单。
More examples
简单的搜索引擎
我们将设计一个简单的搜索引擎,使用 PHP GET 方法作为表单提交类型。
为了简单起见,我们将使用 PHP if 语句 来确定输出。
我们将对上面的注册表单使用相同的 HTML 代码,并对其进行最少的修改。
<html> <head> <title>Simple Search Engine</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php if (isset($_GET['form_submitted'])): ?> <h2>Search Results For <?php echo $_GET['search_term']; ?> </h2> <?php if ($_GET['search_term'] == "GET"): ?> <p>The GET method displays its values in the URL</p> <?php else: ?> <p>Sorry, no matches found for your search term</p> <?php endif; ?> <p>Go <a href="/search_engine.php">back</a> to the form</p> <?php else: ?> <h2>Simple Search Engine - Type in GET </h2> <form action="search_engine.php" method="GET"> Search Term: <input type="text" name="search_term"> <br> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> <?php endif; ?> </body> </html>
请在网页浏览器中查看以上页面。
将显示以下表格。
输入大写字母 GET,然后点击提交按钮。
以下内容将展示。
下图显示了 URL 以上结果。
注意 URL 已显示 search_term 和 form_submitted 的值。 尝试输入除 GET 以外的任何内容,然后点击提交按钮,看看会得到什么结果。
使用复选框、单选按钮
如果用户未选择复选框或单选按钮,则不提交任何值。如果用户选择了复选框或单选按钮,则提交值 1 或 true。
我们将修改注册表单代码,并添加一个允许用户同意服务条款的复选按钮。
<html> <head> <title>Registration Form</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php if (isset($_POST['form_submitted'])): ?> <?php if (!isset($_POST['agree'])): ?> <p>You have not accepted our terms of service</p> <?php else: ?> <h2>Thank You <?php echo $_POST['firstname']; ?></h2> <p>You have been registered as <?php echo $_POST['firstname'] . ' ' . $_POST['lastname']; ?> </p> <p> Go <a href="/registration_form2.php">back</a> to the form</p> <?php endif; ?> <?php else: ?> <h2>Registration Form</h2> <form action="registration_form2.php" method="POST"> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> <br> Agree to Terms of Service: <input type="checkbox" name="agree"> <br> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> <?php endif; ?> </body> </html>
请在浏览器中查看以上表格。
请填写姓名(包括姓和名)。
请注意,“同意服务条款”复选框尚未被选中。
单击“提交”按钮。
您将获得以下结果。
点击返回表单链接,然后选中复选框。
单击“提交”按钮。
您将获得以下结果。











