使用 GET、POST 方法的 PHP 注册表单示例
什么是表格?
当您登录网站或邮箱时,您正在与表单进行交互。
表单用于获取用户的输入并将其提交给 Web 服务器进行处理。
下图说明了表单处理过程。
表单是一个 HTML 标签,包含图形用户界面项(例如输入框、复选框单选按钮等)。
表单使用以下方式定义…标签和 GUI 项目是使用表单元素(例如输入)定义的。
我们何时以及为何使用表格?
- 在开发接受用户输入的灵活、动态的应用程序时,表单非常有用。
- 可以使用表单来编辑数据库中已经存在的数据
建立表格
我们将使用 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”> 指定目标网址和提交类型。
- 名字/姓氏:输入框的标签
- 是输入框标签
- 是新行标签
- 是一个隐藏值,用于检查表单是否已提交
- 是单击后将表单提交到服务器进行处理的按钮
将表单数据提交到服务器
表单的action属性指定处理数据的提交URL。method属性指定提交类型。
PHP POST 方法
- 这是内置的 PHP 超级全局数组变量,用于获取通过 HTTP POST 方法提交的值。
- 数组变量可以从程序中的任何脚本访问;它具有全局作用域。
- 当您不想在 URL 中显示表单发布值时,此方法是理想的选择。
- 使用 post 方法的一个很好的例子是向服务器提交登录详细信息。
它具有以下语法。
<?php $_POST['variable_name']; ?>
这里,
- “$_POST[…]” 是 PHP 数组
- “'variable_name'” 是 URL 变量名称。
PHP GET 方法
- 这是内置的 PHP 超级全局数组变量,用于获取通过 HTTP GET 方法提交的值。
- 数组变量可以从程序中的任何脚本访问;它具有全局作用域。
- 此方法在URL中显示表单值。
- 它非常适合搜索引擎表单,因为它允许用户为结果添加书签。
它具有以下语法。
<?php $_GET['variable_name']; ?>
这里,
- “$_GET[…]” 是 PHP 数组
- “'variable_name'” 是 URL 变量名称。
GET 与 POST 方法
解决方案&帖子 | 的GET |
---|---|
URL 中不可见的值 | URL 中可见的值 |
由于值是通过 HTTP 主体提交的,因此没有值长度的限制 | 值的长度有限制,通常为 255 个字符。这是因为值显示在 URL 中。请注意,字符的上限取决于浏览器。 |
与 Php_GET 方法相比,由于需要花费时间将 Php_POST 值封装在 HTTP 主体中,因此性能较低 | 由于在 URL 中附加值的简单性,与 POST 方法相比具有较高的性能。 |
支持许多不同的数据类型,如字符串、数字、二进制等。 | 仅支持字符串数据类型,因为值显示在 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="/zh-CN/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>
这里,
-
检查 form_submitted 隐藏字段是否已在 $_POST[] 数组中填写,并显示感谢和名字消息。
如果 $_POST[] 数组中没有填写 form_fobmitted 字段,则会显示该表单。
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="/zh-CN/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="/zh-CN/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>
在浏览器中查看上述表单
填写名字和姓氏
请注意,“同意服务条款”复选框尚未被选中。
点击提交按钮
您将获得以下结果
单击返回表单链接,然后选择复选框
点击提交按钮
您将获得以下结果
结语
- 表单用于从用户那里获取数据
- 使用 HTML 标签创建表单
- 可以使用 POST 或 GET 方法将表单提交到服务器进行处理
- 通过 POST 方法提交的表单值封装在 HTTP 主体中。
- 通过 GET 方法提交的表单值将附加并显示在 URL 中。