zoukankan      html  css  js  c++  java
  • PHP表单(get,post)提交方式

    • PHP 表单处理

    PHP 超全局变量 $_GET $_POST 用于收集表单数据(form-data)。

      • $_GET 是通过 URL 参数传递到当前脚本的变量数组。
      • $_POST 是通过 HTTP POST 传递到当前脚本的变量数组。

    有一点很重要的事情值得注意,当处理 HTML 表单时,PHP 能把来自 HTML 页面中的表单元素自动变成可供 PHP 脚本使用。

    • $_GET 变量

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

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

    例:form.html 文件代码

    <html>
    <head>
    <meta charset="utf-8">
    <title>菜鸟教程(runoob.com)</title>
    </head>
    <body>
    
    <form action="welcome.php" method="get">
    名字: <input type="text" name="fname">
    年龄: <input type="text" name="age">
    <input type="submit" value="提交">
    </form>
    
    </body>
    </html>

    当用户点击 "Submit" 按钮时,发送到服务器的 URL 如下所示: http://www.runoob.com/welcome.php?fname=Runoob&amp;age=3 

    "welcome.php" 文件现在可以通过 $_GET 变量来收集表单数据了(请注意,表单域的名称自动成为 $_GET 数组中的键):

    欢迎 <?php echo $_GET["fname"]; ?>!<br>
    你的年龄是 <?php echo $_GET["age"]; ?>  岁。
    • 何时使用 method="get"?

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

      注释:所以在发送密码或其他敏感信息时,不应该使用这个方法!不安全

      然而,正因为变量显示在 URL 中,因此可以在收藏夹中收藏该页面。在某些情况下,这是很有用的。

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

    • $_POST 变量

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

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

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

    例:form.html 文件代码

    <html>
    <head>
    <meta charset="utf-8">
    <title>菜鸟教程(runoob.com)</title>
    </head>
    <body>
    
    <form action="welcome.php" method="post">
    名字: <input type="text" name="fname">
    年龄: <input type="text" name="age">
    <input type="submit" value="提交">
    </form>
    
    </body>
    </html>

    当用户点击 "提交" 按钮时,URL 类似如下所示: http://www.runoob.com/welcome.php 

    "welcome.php" 文件现在可以通过 $_POST 变量来收集表单数据了(请注意,表单域的名称会自动成为 $_POST 数组中的键):

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

    通过 POST 方法从表单发送的信息对其他人是不可见的(安全)(所有名称/值会被嵌入 HTTP 请求的主体中),并且对所发送信息的数量也无限制

    此外 POST 支持高阶功能,比如在向服务器上传文件时进行 multi-part 二进制输入。

    不过,由于变量未显示在 URL 中,也就无法将页面添加到书签

    大多数开发者偏爱 POST 来发送表单数据。

    • 通过 PHP 验证表单数据

    我们要做的第一件事是通过 PHP 的 htmlspecialchars() 函数传递所有变量。

    在我们使用 htmlspecialchars() 函数后,如果用户试图在文本字段中提交以下内容:

    <script>location.href('http://www.hacked.com')</script>

    - 代码不会执行,因为会被保存为转义代码,就像这样:

    &lt;script&gt;location.href('http://www.hacked.com')&lt;/script&gt;

    现在这条代码显示在页面上或 e-mail 中是安全的。

    在用户提交该表单时,我们还要做两件事:

    1. (通过 PHP trim() 函数)去除用户输入数据中不必要的字符(多余的空格、制表符、换行)
    2. (通过 PHP stripslashes() 函数)删除用户输入数据中的反斜杠()

    接下来我们创建一个检查函数(相比一遍遍地写代码,这样效率更好)。

    我们把函数命名为 test_input()。

    现在,我们能够通过 test_input() 函数检查每个 $_POST 变量,脚本是这样的:

    • <?php
      // 定义变量并设置为空值
      $name = $email = $gender = $comment = $website = "";
      
      if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $name = test_input($_POST["name"]);
        $email = test_input($_POST["email"]);
        $website = test_input($_POST["website"]);
        $comment = test_input($_POST["comment"]);
        $gender = test_input($_POST["gender"]);
      }
      
      function test_input($data) {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
      }
      ?>
    
    
  • 相关阅读:
    向TRichEdit插入图片的单元
    等待程序结束后, 自动启动程序的批处理
    执行程序函数
    基于IWICImage的截图代码
    线程中WICImage与Bitmap数据转换
    清理win10过期补丁的命令
    [转] 常见的哈希函数
    豆瓣小组爬虫.....^_^
    如何在ASP.NET Core中实现CORS跨域
    在ASP.NET Core中使用Angular2,以及与Angular2的Token base身份认证
  • 原文地址:https://www.cnblogs.com/chrischan/p/6900626.html
Copyright © 2011-2022 走看看