PHP - GET 和 POST 方法


浏览器客户端可以通过两种方式向 Web 服务器发送信息。

  • 获取方法
  • POST 方法

在浏览器发送信息之前,它使用一种称为 URL 编码的方案对其进行编码。在此方案中,名称/值对用等号连接,不同的对用 & 符号分隔。

name1=value1&name2=value2&name3=value3

空格将被删除并替换为+字符,任何其他非字母数字字符将替换为十六进制值。信息被编码后被发送到服务器。

获取方法

GET 方法发送附加到页面请求的编码用户信息。页面和编码信息由?分隔。特点。

http://www.test.com/index.htm?name1=value1&name2=value2
  • GET 方法会生成一个长字符串,该字符串出现在服务器日志中的浏览器位置:框中。

  • GET 方法仅限发送最多 1024 个字符。

  • 如果您有密码或其他敏感信息要发送到服务器,切勿使用 GET 方法。

  • GET 不能用于将二进制数据(例如图像或 Word 文档)发送到服务器。

  • 可以使用 QUERY_STRING 环境变量访问通过 GET 方法发送的数据。

  • 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 变量可用于获取通过 G​​ET 和 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 变量包含调用它的 self 脚本的名称。

它将产生以下结果 -

形式