PHP中的 HTTP GET 和 POST 方法
在本文中,我们将通过示例了解PHP中的 HTTP GET 和 POST 方法,以及如何实现这些 HTTP 方法及其用法。
HTTP:超文本传输协议 (HTTP) 旨在实现客户端和服务器之间的通信。 HTTP 用作客户端和服务器之间的请求-响应协议。 Web 浏览器可能是客户端,而托管网站的计算机上的应用程序可能是服务器。客户端(浏览器)向服务器提交 HTTP 请求;然后服务器向客户端返回响应。响应包含有关请求的状态信息,也可能包含请求的内容。
有 2 种 HTTP 请求方法:
- GET:从指定资源请求数据。
- POST:将要处理的数据提交到指定的资源。
我们将通过示例详细了解这两种方法。
GET 方法:在 GET 方法中,数据作为 URL 参数发送,这些参数通常是由 & 分隔的名称和值对字符串。通常,带有 GET 数据的 URL 如下所示:
示例:考虑以下示例:
http://www.example.com/action.php?name=Sam&weight=55
这里,URL 中的粗体部分表示 GET 参数,斜体部分表示这些参数的值。通过与与号 (&) 连接,可以在 URL 中嵌入多个参数 = 值。只能通过 GET 方法发送简单的文本数据。
示例:此示例说明PHP中的 HTTP GET 方法。
HTML
";
echo "You are ". $_GET['weight']. " kgs in weight.";
exit();
}
?>
HTML
";
echo "You are ". $_POST['weight']. " kgs in weight.";
exit();
}
?>
输出:
好处:
- 由于 GET 方法发送的数据显示在 URL 中,因此可以使用特定的查询字符串值为页面添加书签。
- GET 请求可以被缓存并且 GET 请求保留在浏览器历史中。
- 可以为 GET 请求添加书签。
缺点:
- GET 方法不适合传递用户名和密码等敏感信息,因为这些信息在 URL 查询字符串中完全可见,并且可能作为访问页面存储在客户端浏览器的内存中。
- 因为 GET 方法将数据分配给服务器环境变量,所以 URL 的长度是有限的。因此,要发送的总数据是有限制的。
POST 方法:在 POST 方法中,数据在与处理脚本的单独通信中作为一个包发送到服务器。通过 POST 方法发送的数据在 URL 中将不可见。
示例:考虑以下示例:
POST /test/demo_form.php HTTP/1.1
Host: gfs.com
SAM=451&MAT=62
查询字符串(名称/权重)在 POST 请求的 HTTP 消息正文中发送。
示例:此示例说明PHP中的 HTTP POST 方法。在这里,我们使用 preg_match()函数在字符串中搜索模式,如果模式存在则返回 true,否则返回 false。
HTML
";
echo "You are ". $_POST['weight']. " kgs in weight.";
exit();
}
?>
输出:
好处:
- 它比 GET 更安全,因为用户输入的信息在 URL 查询字符串或服务器日志中永远不可见。
- 可以传递的数据量有更大的限制,可以使用 POST 发送文本数据和二进制数据(上传文件)。
缺点:
- 由于 POST 方法发送的数据在 URL 中是不可见的,因此无法使用特定查询为页面添加书签。
- POST 请求永远不会被缓存
- POST 请求不会保留在浏览器历史记录中。
请参阅 HTTP GET 和 POST 方法的区别一文了解它们之间的详细区别。