PHP GET和POST方法的区别
浏览器客户端可以通过两种方式将数据传递给web服务器。
- GET方法
- POST方法
在发送数据之前,浏览器使用一种称为URL编码的方法对其进行加密。在该系统中,名称/值对使用等号连接,而不同的配对使用“&”分隔。空格用“+”符号替换,任何其他非字母数字字符都用十六进制值替换。数据编码后,传输到服务器。
现在让我们来看看各个方法并了解这些方法的工作原理。
GET方法
GET方法将编码的用户信息附加到页面请求中。问号字符将页面与编码内容分隔开。
- GET方法生成一个长字符串,显示在服务器日志和浏览器的“位置”框中。
- GET方法只能发送最多1024个字符。
- 如果您需要将密码或其他敏感信息发送到服务器,请勿使用GET方法。
- GET不能用于向服务器传递二进制数据,例如照片或Word文档。
- QUERY STRING环境变量可用于获取通过GET方法发送的数据。
- PHP提供一个关联数组$_GET,用于访问通过GET方法提供的所有信息。
代码:
<?php
if( _GET["name"] ||_GET["age"] ) {
echo "Welcome ". _GET['name']. "<br />";
echo "You are "._GET['age']. " years old.";
exit();
}
?>
<html>
<body>
<form action = "<?php $_PHP_SELF ?>" method = "GET">
Name: <input type = "text" name = "name" />
Age: <input type = "text" name = "age" />
<input type = "submit" />
</form>
</body>
</html>
POST方法
POST 方法使用 HTTP 头将数据发送到服务器。信息与 GET 方法指定的方式编码,并包含在名为 QUERY STRING 的头中。
- POST 方法对传递的数据量没有限制。
- POST 方法允许提交 ASCII 和二进制数据。
- 因为使用 POST 方法提交的数据通过 HTTP 头路由,所以安全性取决于 HTTP 协议。您可以通过使用安全的 HTTP 来确保数据的安全性。
- PHP 提供了一个关联数组 $_POST,用于访问通过 POST 方法提供的所有信息。
代码:
<?php
if( _POST["name"] ||_POST["age"] ) {
if (preg_match("/[^A-Za-z'-]/",_POST['name'] )) {
die ("invalid name and name should be alpha");
}
echo "Welcome "._POST['name']. "<br />";
echo "You are ". _POST['age']. " years old.";
exit();
}
?>
<html>
<body>
<form action = "<?php_PHP_SELF ?>" method = "POST">
Name: <input type = "text" name = "name" />
Age: <input type = "text" name = "age" />
<input type = "submit" />
</form>
</body>
</html>