PHP 变量 $_GET、$_POST 、$_REQUEST 区别
php中有$_request与$_post、$_get用于接受表单数据,当使用他们时有什么区别,什么情况下用哪种接受表单最好。
1、$_GET 变量
预定义的 $_GET 变量用于收集来自 method="GET" 的表单中的值。
<form action="sharevip.php" method="GET"> Name: <input type="text" name="name"> Age: <input type="text" name="age"> <input type="submit"> </form>
当用户点击 "submit" 按钮时,发送到服务器的 URL 如下所示:
https://www.vipshare8.com/sharevip.php?name=Harry&age=20
页面文件 "sharevip.php" 通过 $_GET 变量来收集表单数据了(请注意,表单域的名称会自动成为 $_GET 数组中的键)
Welcome <?php echo $_GET["name"]; ?> <br> You are <?php echo $_GET["age"]; ?> years old
用来获取由浏览器通过GET方法提交的数据。
GET方法是通过把参数数据加在提交表单的action属性所指的URL中,值和表单内每个字段一一对应,然后在URL中可以看到,但是有如下缺点:
1)从带有 GET 方法的表单发送的信息,对任何人都是可见的(参数显示在浏览器的地址栏)
2)$_GET 对发送信息的量也有限制,最长不超过2KB - 200KB,因浏览器和服务器而定
3)$_GET 变量的安全性不如$_POST
何时使用 method="GET"?
在 HTML 表单中使用 method="GET" 时,所有的变量名和值都会显示在 URL 中。
注释:所以在发送密码或其他敏感信息时,不应该使用这个方法!
然而,正因为变量显示在 URL 中,因此可以在收藏夹中收藏该页面。在某些情况下,这是很有用的。
注释:HTTP GET 方法不适合大型的变量值。它的值是不能超过 2000 个字符的。
2、$_POST 变量
预定义的 $_POST 变量用于收集来自 method="POST" 的表单中的值。
从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。
注释:默认情况下,POST 方法的发送信息的量最大值为 8 MB(可通过设置 php.ini 文件中的 post_max_size 进行更改)。
示例:
<form action="sharevip.php" method="POST"> Name: <input type="text" name="name"> Age: <input type="text" name="age"> <input type="submit"> </form>
当用户点击 "Submit" 按钮时,URL 如下所示:
https://www.mimvp.com/sharevip.php
页面文件 "sharevip.php" 现在可以通过 $_POST 变量来收集表单数据了(请注意,表单域的名称会自动成为 $_POST 数组中的键):
Welcome <?php echo $_POST["name"]; ?> <br> You are <?php echo $_POST["age"]; ?> years old!
何时使用 method="post"?
从带有 POST 方法的表单发送的信息,对任何人都是不可见的,并且对发送信息的量也没有限制。
然而,由于变量不显示在 URL 中,所以无法把页面加入书签。
主要区别如下:
① 安全性 post > get
② 数据传输大小 [浏览器] post > get
③ 保存到收藏夹 get比较方便,直接带有参数
3、$_REQUEST 变量
预定义的 $_REQUEST 变量包含了 $_GET、$_POST 、 $_COOKIE 的内容。
$_REQUEST 变量可用来收集通过 GET 和 POST 方法发送的表单数据。
$_REQUEST 变量既可以收集GET方法发送的数据,也可以接受POST方法接受的数据。
但是$_REQUEST["参数"]比较慢,通过post和get方法提交的所有数据,都可以通过$_REQUEST数组["参数"]获得
示例:
Welcome <?php echo $_POST["name"]; ?> <br> You are <?php echo $_POST["age"]; ?> years old!
注意事项:
1. 不要经常使用$_REQUEST,速度比较慢
2. 如果不确定 $_GET / $_POST,可以使用 $_REQUEST
你接收数据时候,可以这样
if($_SERVER['REQUEST_METHOD'] == "POST") { echo $_POST['name']; } else if($_SERVER['REQUEST_METHOD'] == "GET"){ echo $_GET['name']; }
评论列表