PHP 使用GET和POST方法
PHP提供了两种方法,通过这两种方法,客户端(浏览器)可以向服务器发送信息。这些方法如下所示,并进行详细讨论:
- GET方法
- POST方法
GET和POST方法是在标签内使用的HTTP请求方法,用于向服务器发送表单数据。
HTTP协议使得客户端和服务器之间可以进行通信,其中浏览器可以是客户端,而托管您网站的计算机系统上运行的应用程序可以是服务器。
GET方法
GET 方法用于提交HTML表单数据。预定义的 $_GET变量 用于处理此数据。
使用GET方法从HTML表单发送的信息对于浏览器中的每个人都是可见的,这意味着所有变量名及其值都将显示在URL中。因此,GET方法不适合发送敏感信息。
示例
localhost/gettest.php?username=Harry&bloodgroup=AB+
上述URL中的 粗体 部分是变量名称,并且斜体部分包含它们对应的变量值。
请注意,GET方法只能发送有限数量的信息。
借助一个示例,让我们了解GET方法的工作原理 –
示例
下面的代码将显示一个包含两个输入字段和一个提交按钮的HTML表单。在这个HTML表单中,我们使用了method = “get”来提交表单数据。
文件:test1.html
<html>
<body>
<form action = "gettest.php" method = "GET">
Username: <input type = "text" name = "username" /> <br>
Blood Group: <input type = "text" name = "bloodgroup" /> <br>
<input type = "submit" />
</form>
</body>
</html>
创建gettest.php文件,该文件将接受通过HTML表单发送的数据。
文件:gettest.php
<html>
<body>
Welcome <?php echo _GET["username"]; ?> </br>
Your blood group is: <?php echo_GET["bloodgroup"]; ?>
</body>
</html>
当用户在填写完表单后,点击 提交 按钮时,发送到服务器的URL可能看起来像这样:
localhost/gettest.php?username=Harry &bloodgroup=AB-
输出结果将如下所示:
Welcome Harry
Your blood group is: AB-
GET方法的优点(method=”get”)
- 您可以使用特定的查询字符串将页面添加到书签,因为GET方法发送的数据会显示在URL中。
- GET请求可以被缓存。
- GET请求始终保留在浏览器历史中。
GET方法的缺点
- 在发送任何敏感信息时,不应使用GET方法。
- 使用方法=”get”只能发送有限数量的数据。此限制不应超过2048个字符。
- 出于安全考虑,永远不要使用GET方法发送高度敏感的信息,例如用户名和密码,因为它们会显示在URL中。
- GET方法无法用于向服务器发送二进制数据(如图像或Word文档)。
POST方法
与GET方法类似,POST方法也用于提交HTML表单数据。但是,该方法提交的数据由预定义的超全局变量$_POST
收集,而不是$_GET
。
与GET方法不同,它没有发送信息的限制。使用POST方法从HTML表单发送的信息对任何人都不可见。
示例
localhost/posttest.php
注意,“post”方法比“get”方法更安全,因为使用POST方法发送的数据对用户不可见。
通过一个示例来理解POST方法的工作原理:
示例
以下代码将显示一个包含两个输入字段和一个提交按钮的HTML表单。在这个HTML表单中,我们使用了method=”post”来提交表单数据。
文件:test2.html
<html>
<body>
<form action = "posttest.php" method = "post">
Username: <input type = "text" name = "username" /> <br>
Blood Group: <input type = "text" name = "bloodgroup" /> <br>
<input type = "submit" />
</form>
</body>
</html>
现在创建 posttest.php 文件来接受HTML表单发送的数据。
文件:posttest.php
<html>
<body>
Welcome <?php echo _POST["username"]; ?> </br>
Your blood group is: <?php echo_POST["bloodgroup"]; ?>
</body>
</html>
当用户在填写表格后点击 提交 按钮时,发送给服务器的URL可能会类似于以下内容:
localhost/posttest.php
输出将类似于下面的输出:
Welcome Harry
Your blood group is: O+
POST方法的优势(method = “post”)
- POST方法适用于发送任何敏感信息,因为使用POST方法发送的信息对任何人来说都不可见。
- 使用POST方法发送的数据大小没有限制。您可以使用这种方法发送大量的信息。
- 可以使用POST方法发送二进制和ASCII数据。
- 数据安全性取决于HTTP协议,因为使用POST方法发送的信息通过HTTP头部传递。通过使用安全的HTTP,您可以确保数据安全。
POST方法的缺点
- POST请求不会被缓存。
- POST请求不会保存在浏览器历史记录中。
- 无法添加书签,因为变量不会显示在URL中。
$_REQUEST变量
$_REQUEST
变量是一个超全局变量,可以保存$_GET
和$_POST
变量的内容。换句话说,PHP $_REQUEST
变量用于收集通过GET或POST方法发送的表单数据。它还可以收集$_COOKIE
变量的数据,因为它不是特定于方法的变量。