PHP100例PHP处理表单数据

Posted 小雨青年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP100例PHP处理表单数据相关的知识,希望对你有一定的参考价值。

目录

哪里需要处理表单

表单在我们的实际项目中很常见,比如

  • 官网的联系方式填写
  • 微信群收到的问卷调查

涉及到收集用户输入内容的大部分都可以作为表单来处理数据。

怎么接收表单数据

网页作为信息的接收者,一般使用input标签作为信息输入的载体,常见的表单类型如下,html部分本文不重点展开。

  • text 文本
  • password 密码
  • file 文件
  • radio 单选
  • checkbox 多选
  • hidden 隐藏
  • submit 表单提交
  • reset 表单重置

在表单外,需要包一层form标签,如下所示

<form action="action.php" method="post">
  <input type="text" name="name" />
  <input type="submit" value="Submit" />
</form>

methodgetpost两种方式,他们的区别有

  • get是把表单的值放在action对应的url中,post是放在HTTP HEADER 中的
  • 受url长度限制,get的最大数据为2KB
  • form的默认方法为get

PHP端接收表单数据的方式,根据传参方式不同也不同

  • get通过$_GET接收,post通过$_POST接收,文件通过$_FILES接收
  • php://input可以读取没有处理过的POST数据,且不能配置enctype=multipart/form-data
  • 一般输入的接收值为字符串,多选checkbox接收为数组

如何配置表单相关参数

PHP处理表单的参数,在``php.ini`

  • file_uploads 是否允许http上传,默认为On
  • upload_tmp_dir 文件上传的临时目录,也就是我们在查看$_FILES中看到的tmp_name="/var/tmp/xxx"
  • upload_max_filesize 文件上传的最大值
  • post_max_size post方式接收数据的最大值,指的是一个表单的全部数据,不是只包含文件
  • max_execution_time PHP运行最大时间,默认30秒,配置0为无限制
  • max_input_time PHP脚本解析请求的时间,默认60秒,配置0为无限制
  • memory_limit 单个脚本的内存限制,无限制为-1

此外,还需要配置所在服务器的上传限制,比如nginx配置client_max_body_size 10M; ,apache 配置LimitRequestBody 10485760

怎么保证安全性

如果在项目中,因为网络问题或者用户操作,造成了用户的重复提交表单数据或者订单的重复操作,我们该如何避免呢?

这里就要给出一个概念——幂等性,就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了多余的数据或者额外的结果。

我们可以使用如下方式保证表单提交的幂等性。

  1. 每次提交带提交的唯一标识,保证不会重复提交多次
  2. 对于订单这类业务判断订单状态,保证已经操作的订单不允许再次操作
  3. 前端控制请求操作,没有返回结果之前不允许再次提交

结束语

PHP处理表单提交,总体包含两部分,前端页面和PHP处理,篇幅有限有些内容没有讲透,希望各位在文末留言,以便后续完善补充~

以上是关于PHP100例PHP处理表单数据的主要内容,如果未能解决你的问题,请参考以下文章

PHP表单处理会话管理文件上传文件处理执行函数(10.8 第十六天)

PHP超文本预处理器(通用开源脚本语言)

发送序列化的表单数据并接收带有表单和会话数据的 PHP Laravel 重定向

PHP接收json,并将接收数据插入数据库

如何在php中接收AJAX数据[重复]。

php提交参数很多的表单 有啥简单的办法