PHP GET & POST 方法
浏览器客户端发送信息到Web服务器有两种方式。
- GET 方法
- POST 方法
在浏览器发送信息之前,它会使用一种称为URL编码的方案对信息进行编码。在这种方案中,名称/值对使用等号连接,不同的对由和号分隔。
name1=value1&name2=value2&name3=value3
空格被删除并替换为“+”字符,其他非字母数字字符被替换为十六进制值。信息编码后发送给服务器。
GET方法
GET方法将编码的用户信息附加到页面请求中。页面和编码信息之间用问号 “?” 分隔。
http://www.test.com/index.htm?name1=value1&name2=value2
- The GET方法会在服务器日志和浏览器的“位置”框中显示一个长字符串。
-
GET方法只能发送最多1024个字符。
-
如果需要发送密码或其他敏感信息到服务器,请不要使用GET方法。
-
GET不能用于发送二进制数据,如图像或Word文档,到服务器。
-
使用GET方法发送的数据可以通过QUERY_STRING环境变量访问。
-
PHP提供了 $_GET 关联数组,用于通过GET方法访问所有发送的信息。
将以下示例源代码放入test.php脚本中试一试。
<?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方法访问所有发送的信息。
尝试以下示例,将源代码放入test.php脚本中进行测试。
<?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>
它将产生以下结果−
$_REQUEST
变量
PHP的$_REQUEST变
量包含了$_GET
、$_POST
和$_COOKIE
的所有内容。我们将在讲解关于cookies时讨论$_COOKIE
变量。
PHP的$_REQUEST
变量可以用来获取使用GET和POST方法发送的表单数据的结果。
通过将源代码放入test.php脚本中尝试以下示例。
<?php
if( _REQUEST["name"] ||_REQUEST["age"] ) {
echo "Welcome ". _REQUEST['name']. "<br />";
echo "You are "._REQUEST['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>
在这里,$_PHP_SELF
变量包含了调用它的脚本的名称。
它将产生以下结果 −