PHP中GET方法和POST方法的使用(区别与联系)

Web TOMORROW 2个月前 (10-06) 260次浏览 0个评论 扫描二维码

GET 方法POST 方法http协议中最为常用的两个方法,所以理解这两个方法在PHP中的使用方法和他们的区别与联系十分重要。下面将通过一个实例来展示。

 

PHP中 GET 和 POST 的使用方法

首先写一个 HTML,里面包含两个表单 form,其中第一个 form 使用GET 方法;第二个使用POST 方法

<!DOCTYPE html>
<html>
<head>
	<title>PHP中 GET 和POST 方法的区别与联系</title>
	<meta charset="utf-8"/>
</head>
<body>
	<h2>GET 方法:</h2>
	<form class="mget" action="test.php" method="get">
		<p>用户名:
			<input type="text" class="input" name="user">
		</p>
		<p>密码:
			<input type="password" class="input" name="psw">
		</p>
		<input type="submit" class="btn" value="登录 1">
	</form>
	<h2>POST 方法:</h2>
	<form class="mpost" action="test.php" method="post">
		<p>用户名:
			<input type="text" class="input" name="user">
		</p>
		<p>密码:
			<input type="password" class="input" name="psw">
		</p>
		<input type="submit" class="btn" value="登录 2">
	</form>
</body>
</html>

 

浏览器显示效果如下:

PHP 中 GET 方法和 POST 方法的使用(区别与联系)

然后再写一个 test.php,因为上面的 HTML 中的 form 表单的 action 是调用 test.php 。该PHP中首先通过一个PHP的预定义变量$_SERVER[“REQUEST_METHOD”]判断请求使用的是GET 方法还是POST 方法,不同的方法执行不同的代码。

<?php
if($_SERVER["REQUEST_METHOD"] == "GET"){
	$user = $_GET["user"];
	$psw = $_GET["psw"];
	echo "GET 方法得到的数据:</br>";
	echo "用户名:".$user."</br>";
	echo "密码:".$psw."</br>";
}
else{
	$user = $_POST["user"];
	$psw = $_POST["psw"];
	echo "POST 方法得到的数据:</br>";
	echo "用户名:".$user."</br>";
	echo "密码:".$psw."</br>";
}
?>

然后来测试一下。

 

首先测试一下GET 方法

在 GET 方法下的用户名输入“张三”,密码输入“abc123”,然后点击登录。

PHP 中 GET 方法和 POST 方法的使用(区别与联系)

 

点击登录之后的浏览器输出为:

PHP 中 GET 方法和 POST 方法的使用(区别与联系)

也就是说,test.php 已经得到了正确的数据,那它是如何得到的呢?

 

数据传输途径是这样的:

  • 用户名对应的 Input 标签的 name 属性是 user,用户输入的用户名与 user 绑定;
  • 然后通过 HTTP 协议的 GET 方法发送到服务器的 test.php;
  • 而用户名数据就被存放到了预定义变量$_GET 数组中,其对应的索引就是 user;
  • 所以在 test.php 中,HTML 表单所提交的用户名就可以通过$_GET[“user”]获取;
  • 同理对应的密码数据也这样传递的。

 

同理,POST 方法的使用也是与 GET 的类似的:

在 POST 方法下的用户名输入“李四”,密码输入“cba321”,然后点击登录。

PHP 中 GET 方法和 POST 方法的使用(区别与联系)

点击登录后浏览器的输出结果如下:

PHP 中 GET 方法和 POST 方法的使用(区别与联系)

可以看到,POST 方法同样是可以得到表单提交的数据的。那么这两者区别在哪呢?

 

GET 和 POST 的区别

如果前面再对 GET 方法进行测试的时候仔细观察,URL 的变化,你就会发现,点击登录之后的 URL 是这样的:

PHP 中 GET 方法和 POST 方法的使用(区别与联系)

从 URL 中,可以清楚地读出表单所提交的数据。

 

而使用 POST 方法的 URL 是这样的:

PHP 中 GET 方法和 POST 方法的使用(区别与联系)

 

从 URL 的就可以看出明显的区别。GET 方法的数据是存放在 URL 中传送的,POST 的方法的数据则是存放在 HTTP 消息中的请求体中传送的。(此处可参考:超文本传输协议 HTTP 详解 )

所以 GET 方法传送的数据是非常不安全的,数据被获取的成本非常低,并且 URL 是有长度限制的,所以传送的数据不能太大,数据类型仅限于 ASCII 字符。

 

GET 和 POST 的使用场景

所以 GET 的方法一般用在交互的场景(例如查询,搜索,读取),GET 方法传送的数据作为参数,然后得到对应参数的响应。

 

而 POST 方法则通常用来提交表单数据,或者传输一些需要加密的数据(比如密码,订单信息等)。

 


TOMORROW 星辰 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP 中 GET 方法和 POST 方法的使用(区别与联系)
喜欢 (0)
TOMORROW
关于作者:
TOMORROW星辰第一作者。如有疑问或者发现错误,请留言作者。
紧张的豌豆发表我的评论  如需接收评论回复通知,请填写正确的 个人信息
取消评论
表情 加粗 斜体 签到