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

  • 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>

它会产生以下结果 :

Forms

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>

它会产生以下结果 :

Forms

$ _REQUEST变量

PHP $ _REQUEST变量包含$ _GET,$ _POST和$ _COOKIE的内容.我们将在解释cookie时讨论$ _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变量包含调用它的自我脚本的名称.

它将产生以下结果 :

Forms