表单提交

PHP 中的 $_GET$_POST 变量用于检索表单中的信息,比如用户输入。

$_GET

在 PHP 中,预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值。

注意

在 HTML 表单中使用 method="get" 时,所有的变量名和值都会显示在 URL 中。

注意

HTTP GET 方法不适合大型的变量值。它的值是不能超过 2000 个字符的。

注意

在发送密码或其他敏感信息时,不应该使用这个方法!

预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值。

从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送信息的量也有限制。

示例

<form action="welcome.php" method="get">
名字: <input type="text" name="fname">
年龄: <input type="text" name="age">
<input type="submit" value="提交">
</form>

当用户点击 "Submit" 按钮时,发送到服务器的 URL 如下所示:

http://www.test.com/welcome.php?fname=Runoob&amp;age=3

welcome.php 文件现在可以通过 $_GET 变量来收集表单数据了:

欢迎 <?php echo $_GET["fname"]; ?>!<br>
你的年龄是 <?php echo $_GET["age"]; ?> 岁。

$_POST

在 PHP 中,预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值。

预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值。

从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。

提示

默认情况下,POST 方法的发送信息的量最大值为 8 MB(可通过设置 php.ini 文件中的 post_max_size 进行更改)。

然而,由于变量不显示在 URL 中,所以无法把页面加入书签。

实例

<form action="welcome.php" method="post">
名字: <input type="text" name="fname">
年龄: <input type="text" name="age">
<input type="submit" value="提交">
</form>

当用户点击 "提交" 按钮时,URL 类似如下所示:

http://www.test.com/welcome.php

"welcome.php" 文件现在可以通过 $_POST 变量来收集表单数据了:

欢迎 <?php echo $_POST["fname"]; ?>!<br>
你的年龄是 <?php echo $_POST["age"]; ?> 岁。

$_REQUEST

预定义的 $_REQUEST 变量包含了 $_GET$_POST$_COOKIE 的内容。

$_REQUEST 变量可用来收集通过 GET 和 POST 方法发送的表单数据。

比如上面的请求,都可以直接使用 $_REQUEST 进行处理。

欢迎 <?php echo $_REQUEST["fname"]; ?>!<br>
你的年龄是 <?php echo $_REQUEST["age"]; ?>  岁。

数据传输编码方式

在前端 Form 元素的语法中,EncType 表明提交数据的格式 用 EncType 属性指定将数据回发到服务器时浏览器使用的编码类型。例如: application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。 multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分,这个一般文件上传时用。 text/plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。

在服务端之间传输数据,可以使用 Content-type 显示指明数据传输的编码方式:

$set_opts[CURLOPT_HTTPHEADER] = [
  'Content-type:application/x-www-form-urlencoded'
];

x-www-form-urlencoded

就是 application/x-www-from-urlencoded,会将表单内的数据转换为键值对,比如: name=Java&age = 23

form-data

就是 multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时会有 Content-Type 来表名文件类型;content-disposition用来说明字段的一些信息;由于有boundary隔离,所以multipart/form-data既可以上传文件也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。

x-www-form-urlencoded 与 form-data 的区别

multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息. x-www-form-urlencoded:只能上传键值对,并且键值对都是间隔分开的.

raw

可以上传任意格式的文本,可以上传text、json、xml、html等。

binary

就是 application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以一次只能上传一个文件。

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress