使用 GET、POST 方法的 PHP 注册表单示例

什么是表格?

当您登录网站或邮箱时,您正在与表单进行交互。

表单用于获取用户的输入并将其提交给 Web 服务器进行处理。

下图说明了表单处理过程。

PHP 表单

表单是一个 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 之间的区别

GET 与 POST 方法

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 中。