PHP 中的 Get 和 Post 方法

17 Mar 2025 | 4 分钟阅读

PHP 提供了两种客户端(浏览器)向服务器发送信息的方法。这些方法如下所示,并进行了详细讨论。

  1. GET 方法
  2. POST 方法

Get 和 Post 方法是用于在 <form> 标签内部将表单数据发送到服务器的 HTTP 请求方法。

HTTP 协议实现了客户端和服务器之间的通信,其中浏览器可以是客户端,而运行在托管您网站的计算机系统上的应用程序可以是服务器。

GET 方法

GET 方法用于提交 HTML 表单数据。此数据由预定义的 $_GET 变量收集以进行处理。

使用 GET 方法从 HTML 表单发送的信息在浏览器的地址栏中对所有人可见,这意味着所有变量名及其值将显示在 URL 中。因此,get 方法不安全,不适合发送敏感信息。

例如

上述 URL加粗的部分是变量名,斜体部分包含其对应变量的值。

请注意,使用 GET 方法只能发送有限量的信息。

通过一个示例,让我们了解 GET 方法的工作原理:

示例

以下代码将显示一个包含两个输入字段和一个提交按钮的 HTML 表单。在此 HTML 表单中,我们使用 method = "get" 来提交表单数据。

文件:test1.html


Get and Post Methods in PHP

创建 gettest.php 文件,它将接受 HTML 表单发送的数据。

文件:gettest.php

当用户填写完表单并点击提交按钮后,发送到服务器的 URL 可能会是这样的:

localhost/gettest.php?username=Harry&bloodgroup=AB-

输出将如下所示:

Welcome Harry
Your blood group is: AB-

GET 方法(method = "get")的优点

  • 您可以将带有特定查询字符串的页面添加书签,因为 GET 方法发送的数据显示在 URL 中。
  • GET 请求可以被缓存。
  • GET 请求始终保留在浏览器历史记录中。

GET 方法的缺点

  • 发送任何敏感信息时不应使用 GET 方法。
  • 使用 method = "get" 只能发送有限量的数据。此限制不应超过 2048 个字符。
  • 出于安全原因,切勿使用 GET 方法发送高度敏感的信息,如用户名和密码,因为它会将它们显示在 URL 中。
  • GET 方法不能用于向服务器发送二进制数据(如图像或 Word 文档)。

POST 方法

与 GET 方法类似,POST 方法也用于提交 HTML 表单数据。但此方法提交的数据由预定义的超全局变量 $_POST 收集,而不是 $_GET。

与 GET 方法不同,它对发送的信息量没有限制。使用 POST 方法从 HTML 表单发送的信息对任何人都是不可见的。

例如

请注意,“post”方法比“get”方法更安全,因为使用 POST 方法发送的数据对用户是不可见的。

通过一个示例,让我们了解 POST 方法的工作原理:

示例

以下代码将显示一个包含两个输入字段和一个提交按钮的 HTML 表单。在此 HTML 表单中,我们使用 method = "post" 来提交表单数据。

文件:test2.html


Get and Post Methods in PHP

现在创建 posttest.php 文件以接受 HTML 表单发送的数据。

文件:posttest.php

当用户填写完表单并点击提交按钮后,发送到服务器的 URL 可能会是这样的:

localhost/posttest.php

输出将如下所示:

Welcome Harry
Your blood group is: O+ 

POST 方法(method = "post")的优点

  • POST 方法对于发送任何敏感信息很有用,因为使用 POST 方法发送的信息对任何人都是不可见的。
  • 使用 POST 方法发送的数据大小没有限制。您可以使用此方法发送大量信息。
  • 二进制和 ASCII 数据也可以使用 POST 方法发送。
  • 数据安全取决于 HTTP 协议,因为使用 POST 方法发送的信息通过 HTTP 头部传输。通过使用安全的 HTTP,您可以确保数据安全。

POST 方法的缺点

  • POST 请求不缓存。
  • POST 请求从不保留在浏览器历史记录中。
  • 无法将页面添加书签,因为变量不显示在 URL 中。

$_REQUEST 变量

$_REQUEST 变量是一个超全局变量,它可以保存 $_GET 和 $_POST 变量的内容。换句话说,PHP $_REQUEST 变量用于收集通过 GET 或 POST 方法发送的表单数据。它还可以收集 $_COOKIE 变量的数据,因为它不是方法特定的变量。