【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处理,篇幅有限有些内容没有讲透,希望各位在文末留言,以便后续完善补充~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小雨青年

程序员可以把咖啡转化成代码~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值