在PHP里,我们有两个超全局数组$_POST和$_GET用于记录表单数据,它们都是以关联数组的形式存储键值对。

其中,$_POST是通过 HTTP POST的方式来进行数据记录,不可见;而$_GET是通过 URL 的方式来进行数据记录 ,可见且有字符约束,仅能处理约2084个字符。

HTTP POST:

我们先准备一个test.php来模拟 HTTP POST请求。主要的流程是:

1. HTML通过method="POST" action="test.php"来指定提交方式以及提交表单到test.php。

2. PHP $_SERVER超全局变量数组有一个键值对$_SERVER['REQUEST_METHOD'] - 'GET'(默认值是GET)记录HTML提交的表单信息。当用户通过HTTP POST提交表单信息时,值更改为“POST”;无则默认“GET”。通过这个机制触发PHP程序。

3. 数据存储在$_POST这个超全局数组里,遍历该数组就能获取表单信息。

<?php
/* 这里负责处理HTTP POST提交的表单数据 */
error_reporting(E_ALL);//开启所有报错
ini_set('display_errors', 1);//允许页面展示报错
// 只处理POST请求
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    echo "<h2>收到的POST数据:</h2>";
     
    foreach ($_POST as $key => $value) {
        echo "$key = $value<br>";
    }
     
    echo '<hr><a href="test.php">返回</a>';
    exit;
}
?>
<!DOCTYPE html>
<html>
<head>
    <title>POST测试</title>
</head>
<body>
      <h1>Dotcpp编程——:HTTP POST提交表单</h1>
     
    <form method="POST" action="test.php">
        姓名:<input type="text" name="name" value="Dotcpp用户"><br>
        邮箱:<input type="text" name="email" value="123456@dotcpp.com"><br>
        <button type="submit">提交</button>
    </form>
     
    <p>POST数据不会显示在URL中</p>
</body>
</html>


GET:

我们先准备一个test.php来模拟 GET请求。主要的流程是:

1. HTML通过method="GET" action="test.php"来指定提交方式以及提交表单到test.php。

2. 直接检查$_GET数组为不为空,空则没有表单数据,反之。

3. 数据存储在$_GET这个超全局数组里,遍历该数组就能获取表单信息。

<?php
/* 这里负责处理GET提交的表单数据 */
error_reporting(E_ALL);//开启所有报错
ini_set('display_errors', 1);//允许页面展示报错
// 只处理GET请求
if (!empty($_GET)) {
    echo "<h2>收到的GET数据:</h2>";
    foreach ($_GET as $key => $value) {
        echo "$key = $value<br>";
    }
    echo '<hr><a href="test.php">返回</a>';
    exit;
}
?>
<!DOCTYPE html>
<html>
<head>
    <title>GET测试</title>
</head>
<body>
      <h1>Dotcpp编程——:GET提交表单</h1>
     
    <form method="GET" action="test.php">
        姓名:<input type="text" name="name" value="Dotcpp用户"><br>
        邮箱:<input type="text" name="email" value="123456@dotcpp.com"><br>
        <button type="submit">提交</button>
    </form>
     
    <p>GET数据会显示在URL中</p>
</body>
</html>

值得注意的是,我们能够在URL里看到

?name=Dotcpp用户&email=123456%40dotcpp.com

,也就是默认提交信息。所以,如果是敏感信息,请使用HTTP POST进行表单数据提交。

总结:需要明确提交信息我们使用method="GET",敏感信息需要method="POST";不同方式提交的表单数据分别在各自的超全局数组里,我们可以通过foreach遍历来获取表单信息。

点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)