• 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;
    }
    ?>

PHP表单(get,post)提交方式的更多相关文章

  1. form表单两种提交方式的不同

      我们在使用<Form>表单的时候,最常用的提交方式就是Get和Post.我们都知道这两种方式最大的差别就是安全性,除此之外,它们还有哪些其他的区别,你知道吗?   在<Form& ...

  2. 6.form表单四种提交方式

    一.使用jquery的ajax方式提交: 二.使用easyui的form组件内置的submit方法提交: 三.先定义表单,然后使用submit方法提交: 四.先定义表单,然后按下enter键时提交:

  3. form表单4种提交方式

    <!DOCTYPE html><html> <head> <title>JavaScript表单提交四种方式</title> <met ...

  4. HTML form表单的默认提交方式

    默认为Get,亲测.. key值为控件name属性值,如果没有 url中就没有此值 aspx中默认Form表单提交方式为post

  5. 表单<form></form>提交方式的区别

    <form action="" method="get/post"> 表单<form></form>的提交方式有两种:pos ...

  6. 提交表单时,post方式无法提交(一种情况)

    tomcat6,设置文件上传不限制大小maxPostSize="0" 但是在tomcat7及以后版本,应设置为小于0,如maxPostSize="-1"  否则 ...

  7. C# MVC提交表单的四种方式(转)

    Mvc 提交表单的4种方法全程详解(转) 一,MVC  HtmlHelper方法 Html.BeginForm(actionName,controllerName,method,htmlAttribu ...

  8. MVC中提交表单的4种方式

    一,MVC  HtmlHelper方法 Html.BeginForm(actionName,controllerName,method,htmlAttributes){} BeginRouteForm ...

  9. 【总结-前台发送后台接收表单】MVC提交表单的四种方式

    https://www.cnblogs.com/chenwolong/p/Form.html#commentform 后台控制器接收前台表单参数三种方法: 一.普通参数 HTML标签name 和参数名 ...

  10. ASP.NET MVC Jquery Validate 表单验证的多种方式

    在我们日常开发过程中,前端的表单验证很重要,如果这块处理不当,会出现很多bug .但是如果处理的好,不仅bug会很少,用户体验也会得到很大的提升.在开发过程中我们可以不借助 JS 库,自己去手写 JS ...

随机推荐

  1. git获取远程仓库代码

    首先在本地创建一个目录“ MyProject”,用来存放工程文件,git进入该文件夹,执行 git clone 远程项目MyCode地址 将代码克隆到本地然后进入“MyCode”文件夹下 cd MyC ...

  2. 检查Linux服务器性能命令详解

    如果你的Linux服务器突然负载暴增,如何在最短时间内找出Linux性能问题所在? 通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解. uptime dmesg | tail vmst ...

  3. php的soap无故出错的真凶:wsdl缓存

    soap不更新的真凶: 当我修改了服务端的调用方法后,更新了wsdl,客户端的参数老是丢失(不是全丢失,而是部分),让人很郁闷. 第二天我索性增加了一个服务端的新方法,更新了wsdl,但是客户端请求却 ...

  4. 查看pc ip地址

    1.使用Windows+R键打开“运行”窗口,然后输入CMD进入命令提示窗口 2.进入命令窗口之后,输入:ipconfig/all 回车即可看到整个电脑的详细的IP配置信息

  5. jsonp解决跨域问题

    日常开发网页中,时常遇到跨域问题,通常解决办法:后端提供的接口支持jsonp格式,前端采用dataType:jsonp. 一:Jquery封装的AJAX,dataType:jsonp格式的方法: $. ...

  6. 使用js在网页上显示时间

    <html> <script> function getDate(){ var d,s,t; d = new Date(); s = d.getFullYear().toStr ...

  7. android 写入联系人

    public void testInsert() { ContentValues values = new ContentValues(); /* * 首先向RawContacts.CONTENT_U ...

  8. js 有小数点数据求和多出小数点问题记录

    >> +192.92 << 492.91999999999996 >> (*+)/ << 492.92 做统计汇总时,页面加和,展示出一堆的小数点. 网 ...

  9. bootstrap常用知识点总结

    api地址:https://v3.bootcss.com/css/#forms 栅格参数: bootstrap 其实 是把 网页等 分为 了 12分,bootstrap把 根据屏 幕 大小 把屏 幕分 ...

  10. 卷积网络训练太慢?Yann LeCun:已解决CIFAR-10,目标 ImageNet

    原文连接:http://blog.kaggle.com/2014/12/22/convolutional-nets-and-cifar-10-an-interview-with-yan-lecun/ ...